【问题标题】:How to do pre-order and post-order traversal of THREADED binary search tree?THREADED二叉搜索树如何进行前序和后序遍历?
【发布时间】:2018-03-30 04:02:46
【问题描述】:

好的,所以使用线程按顺序遍历线程二叉树是这样的:

  1. 从最左边的节点开始打印
  2. 跟随线程向右并打印
  3. 点击右边的链接到最左边的节点并打印出来
  4. 跟随线程向右并打印
  5. (重复)

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

【问题讨论】:

    标签: data-structures tree traversal


    【解决方案1】:

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

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      • 2012-03-16
      相关资源
      最近更新 更多