二叉树的创建(前序中序创建二叉树、中序后序创建二叉树)
来源:互联网 发布:吉林11选5遗漏数据 编辑:程序博客网 时间:2024/06/05 23:32
前序中序创建二叉树:
preOrder:{1,2,4,7,3,5,6,8}
inOrder:{4,7,2,1,5,3,8,6}
- 找到中序中和先序相同的节点(i=3)、leftLen=i、rightLen=len-leftLen-1;
- 将先序和中序分为两半,递归调用:(preS+1,inS,leftLen,preorder,inorder) 和 (preS+leften+1,ins+leftlen+1,rightlen.preorder,inorder)
递归实现:
public static TreeNode createTree(int preS,int inS,int length,int[]preorder,int[]inorder){ if (preorder == null || preorder.length ==0){ return null; } TreeNode node = new TreeNode(preorder[preS]); if(length ==1 && preorder[preS] == inorder[inS]) return node; int i = 0; //找到分界点 while (i <=length-1 && preorder[preS]!= inorder[inS+i]) i++; //左半边长度 int leftLen = i; //右半边长度 int rightLen = length-leftLen-1; if(leftLen>=1){ node.left=createTree(preS+1,inS,leftLen,preorder,inorder); } if(rightLen>=1){ node.right=createTree(preS+leftLen+1,inS+leftLen+1,rightLen,preorder,inorder); } return node; }
中序后序创建二叉树:
inOrder:{4,7,2,1,5,3,8,6}
postOrder={7,4,2,5,8,6,3,1}
- 找到中序中和后序相同的节点(i=3);
- 将中和后序分为两半,递归调用:(inS,postE-rightLen-1,leftLen,inorder,postorder)、createTree(inS+leftLen+1,postE-1,rightLen,inorder,postorder)
递归实现:
public TreeNode createTree(int inS,int postE,int length,int[]inorder,int[]postorder){ if (inorder == null || inorder.length ==0){ return null; } TreeNode node = new TreeNode(postorder[postE]); if(length ==1 && inorder[inS] == postorder[postE]) return node; int i = 0; //找到分界点 while (i <=length-1 && postorder[postE]!= inorder[inS+i]) i++; //左半边长度 int leftLen = i; //右半边长度 int rightLen = length-leftLen-1; if(leftLen>=1){ node.left=createTree(inS,postE-rightLen-1,leftLen,inorder,postorder); } if(rightLen>=1){ node.right=createTree(inS+leftLen+1,postE-1,rightLen,inorder,postorder); } return node; }
0 0
- 二叉树的创建(前序中序创建二叉树、中序后序创建二叉树)
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建。
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- 二叉树的 创建
- 二叉树的创建
- 二叉树的创建
- 前序中序创建二叉树
- 数据结构【二叉树】 二叉树的创建
- 二叉树的二叉链表创建
- 创建二叉树 创建单链表
- 树----创建二叉树
- Linux下静态库与动态库的使用
- ESXi5.5如何命令行升级到ESXi6.0
- 断舍离——坚持自己的价值选择
- 利用深度优先搜索算法寻找割点
- gperftools分析cpu使用情况
- 二叉树的创建(前序中序创建二叉树、中序后序创建二叉树)
- javascript组件化
- 冒泡排序2.0
- Android四大组件之Activity
- HDU 4737 A Bit Fun(2013成都网络赛)
- 在ubuntu上安装nodebb
- 数据结构---数组(5)
- VS 中捕获内存泄露
- HDOJ 4466 Triangle 递推