我正在尝试插入二进制节点.我的代码很复杂,没有希望拯救它,所以我打算重写它(基本上我没有考虑回溯,并没有考虑所有密切关注的算法).
我正在尝试使用顺序遍历插入二进制节点,但我不明白我应该如何回溯.
D
/ \
B E
/ \ / \
A C F
Run Code Online (Sandbox Code Playgroud)
我如何搜索根D的左子树,然后返回并搜索正确的子树?这可能是一个愚蠢的问题,但我很难过.我能想到的最好的是这样的:
if (!root.hasLeftChild) {
root = root.getLeftChild();
recurse(root);
}
Run Code Online (Sandbox Code Playgroud)
但是当我到达底部时,我无法回到根部.此外,它没有解决问题,如果我到达左下方节点,我必须在开始回溯之前填充该节点的两个子节点.
我想我正在以错误的方式思考这个问题.