前序和中序、中序和后序确定二叉树
2018-03-31 14:47
204 查看
前序和中序、中序和后序确定二叉树
二叉树的遍历 .前序:{a,b,d,f,g,e,c}
中序:{f,d,g,b,e,a,c}
后序:{f,g,d,e,b,c,a}
前序和中序确定二叉树
前序遍历结果首个元素必然是根节点,然后在中序遍历中查找该节点的位置,它的左边为他的左子树右边为它的右子树。
再次重复上诉操作后
`
public static BinaryTreeNode preInReConstructBinaryTree(char [] pre,char [] in) { if(pre.length==0 || in.length==0){ return null; } BinaryTreeNode node =new BinaryTreeNode(pre[0]); for(int i=0;i<in.length;i++){ //在中序中找到和根相同元素位置 if(in[i]==pre[0]){ node.leftNode=preInReConstructBinaryTree(Arrays.copyOfRange(pre, 1, i+1),Arrays.copyOfRange(in, 0, i)); node.rightNode=preInReConstructBinaryTree(Arrays.copyOfRange(pre,i+1 , pre.length),Arrays.copyOfRange(in, i+1, in.length)); } } return node; }
`
中序和后序确定二叉树
后序遍历结果最后一个元素必然是根节点,然后在中序遍历中查找该节点的位置,它的左边为他的左子树右边为它的右子树。
再次重复上诉操作后
`
public static BinaryTreeNode inPostReConstructBinaryTree(char [] in,char [] post){ if(in.length==0 || post.length==0){ return null; } BinaryTreeNode node=new BinaryTreeNode(post[post.length-1]); for(int i=0;i<in.length;i++){ if(in[i]==post[post.length-1]){ node.leftNode=inPostReConstructBinaryTree(Arrays.copyOfRange(in,0,i),Arrays.copyOfRange(post,0,i)); node.rightNode=inPostReConstructBinaryTree(Arrays.copyOfRange(in,i+1,in.length),Arrays.copyOfRange(post,i,post.length-1)); } } return node; }
`
相关文章推荐
- 树和二叉树的应用举例(相似二叉树,由先序和中序、中序和后序确定二叉树)
- 二叉树 前序 中序 后序 递归 和非递归
- 为什么只给出前序和后序,不能唯一确定一个二叉树
- 剑指offer_根据前序和中序确定二叉树
- 根据前序和中序创建二叉树及二叉树的前序、中序、后序、层次打印
- JAVA 根据二叉树的前序和中序获得后序,后序和中序获得前序
- 已知一棵二叉树的后序遍历和中序遍历,写出可以确定这棵二叉树的算法
- 根据二叉树的前序和中序获得后序,后序和中序获得前序
- 由中序和后序确定一棵二叉树
- [算法与数据结构] - No.7 二叉树建立及其前序、中序、后序遍历
- 递归方法 前序 中序 后序 遍历二叉树
- 经典二叉树问题 根据前序和中序生成后序
- poj2255 根据二叉树的前序和中序遍历 求出树的后序遍历
- 二叉树系列——根据前序和中序、中序和后序构建二叉树
- 机试指南-根据二叉树的前序和中序确定后序序列
- Python练手之根据前序和中序&根据中序和后序重建二叉树,输出前序、中序和后序遍历结果
- 给出中序和后序遍历,构造二叉树以及给出前序和中序构造二叉树
- 二叉树根据前序和中序确定二叉树
- 二叉树的遍历:前序,中序,后序,层序--包括递归和非递归实现
- 由二叉树的前序遍历和中序遍历来求后序遍历的结果