Java~二叉树进阶练习题:根据先序遍历和中序遍历构建二叉树 与 根据后序遍历和中序遍历构建二叉树

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 先序遍历中 第一个一定是根结点。

  • 中序遍历中 根结点左子树的所有结点一定在根结点的左边,右子树的所有结点一定在根结点的右边。所有中序遍历的序列组成可以表示为 :左子树结点+根结点+右子树结点。

  • 后序遍历中 最后一个结点一定是根结点。**

**根据先序遍历和中序遍历构建二叉树

解题细想:**

  1. 设置变量inedx 方便从preorder数组中获取元素构建结点。

  2. 判断inedx的合法性,防止我们在最终的递归途中数组越界异常。

  3. 中序遍历中根结点可以作为一道分界线,他的左边是他的左子树结点,右边是右子树结点,所以一开始的nodeLeft 为0 nodeRight为中序遍历数组的长度。

  4. 根结点就是先序遍历的第一个结点,构建根结点,然后 index++(方法中index只加一次是因为在preorder数组中index下标的元素只可能是左结点或者右结点)。

  5. 构建根结点的左结点,(在此之前我们要在中序遍历中找到根结点元素的下标pos),我们知道 中序遍历的序列组成可以表示为 :左子树结点+根结点+右子树结点 所以,根结点的左结点一定在pos之前。

  6. 然后我们进行递归进行判断nodeLeft 和nodeRight&

你可能感兴趣的:(程序员,java,面试,算法)