剑指offer--6.重建二叉树

本文介绍了一种根据二叉树的前序遍历和中序遍历结果来重建二叉树的方法。通过递归地创建节点,并根据遍历序列确定左右子树的位置,最终重构出完整的二叉树结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树

public class wr6reConBinaryTree {
	public TreeNode reConstructBinaryTree(int []pre,int []in){
		return reConBTree(pre,0,pre.length-1,in,0,in.length-1);
	}
	
	public TreeNode reConBTree(int []pre,int preleft,int preright,int []in,int inleft,int inright){
		if(preleft>preright || inleft>inright){
			return null;
		}
		TreeNode root=new TreeNode(pre[preleft]);
			for(int i=inleft;i<=inright;i++){
				if(pre[preleft]==in[i]){
					root.left=reConBTree(pre,preleft+1,preleft+i-inleft,in,inleft,i-1);
					root.right=reConBTree(pre,preleft+i-inleft+1,preright,in,i+1,inright);
				}
			}
			System.out.println(root.val+" ");
		
		return root;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		wr6reConBinaryTree biTree=new wr6reConBinaryTree();
		int [] preOrder={1,2,4,8,9,5,10,3,6,7};
		int [] inOrder={8,4,9,2,10,5,1,6,3,7};
		biTree.reConstructBinaryTree(preOrder, inOrder);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值