0

如何创建二叉树并使用 Pre-Order Traversal 策略绘制它?根将是第一个进入的数字。

我有一组数字:48 32 51 54 31 24 39. 48 将是根。子节点如何在 Pre-Order 遍历中被推到二叉树上?

4

2 回答 2

2

想象以下子问题。你有一组数字:

N A1...AX B1...BY

你知道那N是对应树的根。您只需要知道左子树的数字。显然,其余的数字形成了正确的子树。

如果您还记得二叉搜索树的属性,您就会知道左侧子树的元素的值小于根(而右侧的元素的值更大)。

因此,左子树是小于(或可能等于)的数字序列N。其余的数字在右子树中。

递归求解

A1...AX

B1...BY

例如给出:

10 1 5 2 9 3 1 6 4 11 15 12 19 20

你得到:

  • 根:10
  • 左子树:1 5 2 9 3 1 6 4
  • 右子树:11 15 12 19 20
于 2012-12-09T22:43:13.807 回答
2

假设您有以下二叉树:

        A
      /    \  
    B        C   
   / \      / \
  D   E    F   G
     / \    
    H   I

预购遍历是节点、左、右。

所以这个二叉树的 Pre-Order 将是:A B D E H I C F G

有关如何在 C++ 中实现此功能的更多详细信息: https ://stackoverflow.com/a/17658699/445131

于 2012-12-09T23:07:40.237 回答