当前位置: 首页 > 后端技术 > Java

JZ-004-重建一棵二叉树

时间:2023-04-01 18:01:08 Java

重建一棵二叉树题目描述输入某棵二叉树的前序遍历和中序遍历的结果,请重建二叉树。假设输入的前序遍历和中序遍历的结果都不包含重复数。比如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},然后重建二叉树并返回。题目链接:重建二叉树代码importjava.util.*;publicclassJz04{//中序遍历缓存以便遍历数组每个值对应的索引privatestaticMapindexForInOrders=newHashMap();publicstaticTreeNodereConstructBinaryTree(int[]pre,int[]in){for(inti=0;ipreR){返回空值;}TreeNoderoot=newTreeNode(pre[preL]);intinIndex=indexForInOrders.get(root.val);intleftTreeSize=inIndex-inL;root.left=reConstructBinaryTree(pre,preL+1,preL+leftTreeSize,inL);root.right=reConstructBinaryTree(pre,preL+leftTreeSize+1,preR,inL+leftTreeSize+1);返回根;}publicstaticvoidmain(String[]args){//测试用例,并打印最终结果int[]pre=newint[]{3,9,20,15,7};int[]in=newint[]{9,3,15,20,7};TreeNodetreeNode=reConstructBinaryTree(pre,in);Queuenodes=newLinkedList<>();节点。添加(树节点);while(!nodes.isEmpty()){TreeNodecur=nodes.poll();if(cur!=null){System.out.println(cur.val+"");nodes.add(cur.left);nodes.add(cur.right);}}}}【每日留言】你的微笑是最治愈的力量,胜过世间最美的风景

最新推荐
猜你喜欢