如何使用预订遍历策略创建二叉树并绘制它?根将是第一个进入的数字。
我有一组数字:48 32 51 54 31 24 39
。 48将是根。如何在预顺序遍历中将子节点推送到二叉树上?
答案 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
你得到:
答案 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