二叉树遍历的第一&最后结点
根结点root。
中序遍历:
第一结点:根结点左走到底,不一定是叶结点
if (root) {
struct BinaryTreeNode *mostLeft=root;
while (mostLeft->left) {
mostLeft=mostLeft->left;
}
}
最后结点:根结点右走到底,不一定是叶结点
if (root) {
struct BinaryTeeNode *mostRight=root;
while (mostRight->right) {
mostRight=mostRight->right;
}
}
前序遍历:
第一结点:根
最后结点:必为叶结点,是后序逆序遍历的第一个叶结点
if (root) {
struct BinaryTreeNode *child=root;
while (child->right || child->left) {
while (child->right) child=child->right;
if (child->left) child=child->left;
}
}
后序遍历:
第一结点:必为叶结点,是前序遍历的第一个叶结点
if (root) {
struct BinaryTreeNode *child=root;
while (child->left || child->right) {
while (child->left) child=child->left;
if (child->right) child=child->right;
}
}
最后结点:根