算法系列—— 重建二叉树
Posted BridgeGeorge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法系列—— 重建二叉树相关的知识,希望对你有一定的参考价值。
题目
输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。
假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
思路
前序遍历列表:第一个元素永远是 【根节点 (root)】
中序遍历列表:根节点 (root)【左边】的所有元素都在根节点的【左分支】,【右边】的所有元素都在根节点的【右分支】
算法思路:
通过【前序遍历列表】确定【根节点 (root)】
将【中序遍历列表】的节点分割成【左分支节点】和【右分支节点】
递归寻找【左分支节点】中的【根节点 (left child)】和 【右分支节点】中的【根节点 (right child)】
解答
class Solution
public TreeNode buildTree(int[] preorder, int[] inorder)
if(preorder.length==0|| inorder.length==0)
return null;
TreeNode node=new TreeNode(preorder[0]);
for(int i=0;i<inorder.length;i++)
if(preorder[0]==inorder[i])
node.left= buildTree(Arrays.copyOfRange(preorder,1,i+1),Arrays.copyOfRange(inorder,0,i));
node.right=buildTree(Arrays.copyOfRange(preorder,i+1,preorder.length),Arrays.copyOfRange(inorder,i+1,inorder.length));
break;
return node;
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖
以上是关于算法系列—— 重建二叉树的主要内容,如果未能解决你的问题,请参考以下文章