如何进行THREADED二叉搜索树的预订和后序遍历?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何进行THREADED二叉搜索树的预订和后序遍历?相关的知识,希望对你有一定的参考价值。

好的,所以通过使用线程遍历线程二叉树就像这样。从最左边的节点开始打印它跟随线程向右打印它跟随链接向右转到最左边的节点并打印它跟随线程向右打印它...........(重复)

但是如何使用线程进行前后遍历呢?

答案

线程树节点通常有一个标志,告诉您节点中的rightleft指针是对子节点的引用,还是对inorder / preorder后继节点的线程。这是您可以判断节点是否为叶子的唯一方法。

关于线程树的优点是顺序或反向顺序遍历可以快速完成而不需要递归。但是线程树不能帮助您进行后序或前序遍历。如果你想做其中一个,你必须使用递归算法,考虑线程。例如:

preorder(node)
    print node
    if (node.left is not a thread link)
        preorder(node.left)
    if (node.right is not a thread link)
        preorder(node.right)

postorder(node)
    if (node.left is not a thread link)
        preorder(node.left)
    if (node.right is not a thread link)
        preorder(node.right)
    print node

以上是关于如何进行THREADED二叉搜索树的预订和后序遍历?的主要内容,如果未能解决你的问题,请参考以下文章

小白学算法8.二叉树的遍历,前序中序和后序

输出二叉树的先序中序和后序遍历序列

二叉树的中序和后序遍历的非递归实现

中序和后序遍历构造二叉树

怎么根据二叉树的前序,中序,确定它的后序

通过二叉树的中序序列和后序序列获取前序序列