这里有想自己办学术期刊的吗?感兴趣的私信我 (转载)# Biology - 生物学
s*n
1 楼
inorder网上有,另外两个找不到现成答案,帮看看对不对?
Node* preOrderNext(Node* n)
{
if (n->left) return n->left;
if (n->right) return n->right;
Node* p = n->parent;
while (p && p->right==n) {
n = p;
p = n->parent;
}
if (!p) return p;
if (p->right) return p->right;
return p;
}
Node* left_most(Node* n) {
assert(n);
while(n->left) {
n=n->left;
}
return n;
}
Node* postOrderNext(Node* n)
{
Node* p = n->parent;
if (!p) reutrn p;
if (n==p->right) return p;
if (p->right) return left_most(p->right);
return p;
}
Node* inorderNext(Node* n) {
if (n->right) return left_most(p->right);
Node* p = n->parent;
while (p && p->right==n) {
n = p;
p = n->parent;
}
return p;
}
Node* preOrderNext(Node* n)
{
if (n->left) return n->left;
if (n->right) return n->right;
Node* p = n->parent;
while (p && p->right==n) {
n = p;
p = n->parent;
}
if (!p) return p;
if (p->right) return p->right;
return p;
}
Node* left_most(Node* n) {
assert(n);
while(n->left) {
n=n->left;
}
return n;
}
Node* postOrderNext(Node* n)
{
Node* p = n->parent;
if (!p) reutrn p;
if (n==p->right) return p;
if (p->right) return left_most(p->right);
return p;
}
Node* inorderNext(Node* n) {
if (n->right) return left_most(p->right);
Node* p = n->parent;
while (p && p->right==n) {
n = p;
p = n->parent;
}
return p;
}