2025-11-20 06:14:38
后序遍历就是先左后右再根节点,普通树用递归就能搞,但线索树节点少左孩子多右孩子,遍历时得跳着走。比如遇到右孩子是前驱节点,得直接跳到后继继续,这时候得用栈记住还没处理完的节点,不然容易漏节点或者重复访问。
线索树把叶子节点的左右指针改成指向前驱和后继,这样遍历时虽然能少用几次循环,但遇到需要回溯的情况,比如从右子树返回根节点后,还得找左子树继续遍历。这时候栈就像个记事本,把要回溯的节点按顺序记下来。比如遍历到右子树最底下的节点,发现它右孩子是前驱节点,说明该回溯了,这时候栈顶的节点就是当前要处理的父节点。假设有一个线索树有10个节点,遍历时最多需要压栈10次,弹出栈里的节点才能正确访问所有节点。还要注意,栈的存在是为了保证遍历顺序,即使线索树能减少循环次数,但节点状态保存还是得靠栈。
本题链接: