在给定inorder和level遍历的情况下,需要帮助找到构造二叉树的方法。是否可以使用递归来实现,因为必须通过使用队列来完成级别遍历?
答案 0 :(得分:2)
8
/ \
4 9
/ \ \
2 6 10
/
1
您有以下内容:
按顺序:1 2 4 6 8 9 10
等级:8 4 9 2 6 10 1
级别遍历是从树到左,从上到下遍历(如广度优先搜索)。在此示例中,您知道8
将是根节点。现在查看inorder遍历,我们知道1 2 4 6
组成了左子树,9 10
组成了正确的子树。所以我们有:
8
1 2 4 6 9 10
在保留顺序的同时,创建一个级别遍历的副本,而没有我们要访问的节点,用于左右递归构造。下面的注释将通过左侧树步骤和传递的内容:
按顺序:1 2 4 6
等级:4 2 6 1
4
1 2
6
结果:
8
/ 9 10
4
2 1 \
6
按顺序:1 2
等级:2 1
2
1
结果:
8
/ 9 10
4
/ \
2 6
/
1
现在我们已经完成了一直向前的复制,希望你能够了解如何处理树上正确的孩子!一旦你有了算法,你应该能够在给定两个不同的遍历的情况下构造树。关键是要根据两次遍历来识别每次递归调用时如何确定 root ,其余的应该遵循。