如何创建二叉树并使用 Pre-Order Traversal 策略绘制它?根将是第一个进入的数字。
我有一组数字:48 32 51 54 31 24 39
. 48 将是根。子节点如何在 Pre-Order 遍历中被推到二叉树上?
如何创建二叉树并使用 Pre-Order Traversal 策略绘制它?根将是第一个进入的数字。
我有一组数字:48 32 51 54 31 24 39
. 48 将是根。子节点如何在 Pre-Order 遍历中被推到二叉树上?
想象以下子问题。你有一组数字:
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
你得到:
假设您有以下二叉树:
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