C ++,如何创建和绘制二叉树然后在预订中遍历它

时间:2012-12-09 22:37:46

标签: c++ binary-tree tree-traversal

如何使用预订遍历策略创建二叉树并绘制它?根将是第一个进入的数字。

我有一组数字:48 32 51 54 31 24 39。 48将是根。如何在预顺序遍历中将子节点推送到二叉树上?

2 个答案:

答案 0 :(得分: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

你得到:

  • root:10
  • 左子树:1 5 2 9 3 1 6 4
  • 右子树:11 15 12 19 20

答案 1 :(得分:2)

假设您有以下二叉树:

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

预订遍历会转到NODE,LEFT,RIGHT。

因此,这个二叉树的预订将是:A B D E H I C F G

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