二叉树节点的前驱后继
二叉树的特殊节点为方便后序讨论,这里继续定义如下的二叉树特殊节点,并给出寻找这些节点的步骤:
1) \(mostLeft(n)\):其递归定义为“若\(n.left\)非空则返回\(mostLeft(n.left)\),否则返回\(n\)”。等价于迭代步骤“每轮迭代若\(n.left\)非空则置\(n=n.left\)并继续迭代,否则退出迭代返回\(n\)”。直观上是以\(n\)为树根的子树的最左节点;
2) \(mostRight(n)\):其递归定义为“若\(n.right\)非空则返回\(mostRight(n.right)\),否则返回\(n\)”。等价于迭代步骤“每轮迭代若\(n.right\)非空则置\(n=n.right\)并继续迭代,否则退出迭代返回\(n\)”。直观上是以\(n\)为树根的子树的最右节点;… 阅读全文