Java抑制中序遍历和先序遍历 求二叉树
来源:互联网 发布:淘宝发布宝贝最佳时间 编辑:程序博客网 时间:2024/06/07 22:10
(1)确定树的根节点。树根是当前树中所有元素在先序遍历中最先出现的元素,即先序遍历的第一个结点就是二叉树的跟
(2)求解树的子树。找到根在中序遍历的位置,位置左边就是二叉树的左孩子,位置右边是二叉树的右孩子,如果跟结点左边或右边为空,那么该方向子树为空;如果根节点左边和右边都为空,那么根节点已经为叶子节点。
(2)求解树的子树。找到根在中序遍历的位置,位置左边就是二叉树的左孩子,位置右边是二叉树的右孩子,如果跟结点左边或右边为空,那么该方向子树为空;如果根节点左边和右边都为空,那么根节点已经为叶子节点。
(3)对二叉树的左、右孩子分别进行步骤(1)(2),直到求出二叉树的结构为止。
public class Main {public static void main(String[] args) {int[] preorder = {1,2,4,7,3,5,6,8};int[] inorder = {4,7,2,1,5,3,8,6};//System.out.println(preorder[0]);TreeNode root = Solution.reConstructBinaryTree(inorder, 0,7, preorder, 0, 7);Solution.printTreePre(root);}}class Solution {static int i = 0;public static void printTreePre(TreeNode root){//遍历if(root==null){return;}System.out.println(root.val);//先序遍历//left//if(root.left !=null){//System.out.println("left"+root.left.val);//}printTreePre(root.left);
System.out.println(root.val);//中序遍历//right//if(root.right !=null){//System.out.println("right"+root.right.val);//}printTreePre(root.right);System.out.println(root.val);//后序遍历}//重构树public static TreeNode reConstructBinaryTree(int[] in,int inStart,int inEnd, int[] pre, int preStart,int preEnd) {if(inStart > inEnd || preStart > preEnd){return null;}TreeNode root = new TreeNode(pre[preStart]);int indexDivider = 0;for(;indexDivider<=inEnd;indexDivider++){if(in[indexDivider]==root.val){break;}}//int offSet = TreeNode left = reConstructBinaryTree(in, inStart, indexDivider-1, pre, preStart+1, preStart+indexDivider-inStart);TreeNode right = reConstructBinaryTree(in, indexDivider+1, inEnd, pre, preStart+indexDivider-inStart+1, preEnd);root.left = left;root.right = right;return root;}
}
阅读全文
0 0
- Java抑制中序遍历和先序遍历 求二叉树
- 根据中序遍历和后序遍历求二叉树的先序遍历
- 先序遍历+中序遍历求二叉树
- 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
- 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
- java实现二叉树已知先序遍历和中序遍历求后序遍历
- 先序遍历和中序遍历创建二叉树
- 中序遍历和先序遍历构建二叉树
- 已知先序遍历和中序遍历,求后序遍历 && 求二叉树中节点的最大距离
- JAVA二叉树,给出先序遍历和中序遍历,构造出新的二叉树
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- Android studio中的单元测试
- mybatis的二级缓存
- Vue proxyTable 开发环境下前端和后端真实数据对接问题和解决跨域
- Discuz!教程之触屏版不能显示分类信息bug修复
- 使用神经网络和遗传算法玩转 Flappy Bird
- Java抑制中序遍历和先序遍历 求二叉树
- CSS3自定义滚动条样式 -webkit-scrollbar
- java Pattern和Matcher详解
- SQL表连接查询(inner join、full join、left join、right join)
- codility FrogRiverOne
- JAVA解析xml文件(DOM)
- [ArchLinux] 蓝牙鼠标
- elasticsearch实现热门词汇展示
- 一个动画弹出框的 DEMO