创建层次二叉树
来源:互联网 发布:淘宝信用贷款在哪里查 编辑:程序博客网 时间:2024/06/05 01:52
1、层经尝试着用递归实现二叉树的层次创建,但是失败了。如下语言所示,分析可能还是return root上面的两句中,执行完第一句之后,i发生了变化,但还不是太明白:
public class ErChaShu {public TreeNode root;//public int counter;public ErChaShu(){root = null;}public void preOrder(TreeNode node){ if(node != null){ System.out.println(node.val); preOrder(node.left); preOrder(node.right); } } public TreeNode createTree(int[] ints,int i){ if(ints.length==0 || i>=ints.length){return null;}else{System.out.println(i);TreeNode root = new TreeNode(ints[i]);root.left = createTree(ints,++i);root.right= createTree(ints,++i);return root;}}}后来还是参考了一下网上的程序,找了一下规律,才成功:
public class MyCengBuildTree {private TreeNode root;public TreeNode getTree(){return root;}public void createTree(int[] ints){TreeNode[] treeNodes = new TreeNode[ints.length];int i = 0;for(int intE:ints){treeNodes[i++] = new TreeNode(intE);}for(int parentIndex = 0; parentIndex < ints.length/2-1;parentIndex++){treeNodes[parentIndex].left= treeNodes[(parentIndex+1)*2-1];treeNodes[parentIndex].right= treeNodes[(parentIndex+1)*2];}if(ints.length%2==0){treeNodes[ints.length/2-1].left= treeNodes[ints.length-1];}else{treeNodes[ints.length/2-1].left= treeNodes[ints.length-2];treeNodes[ints.length/2-1].right= treeNodes[ints.length-1];}root = treeNodes[0];}public void preOrder(TreeNode root){if(root == null){return;}preOrder(root.left);System.out.println(root.val);preOrder(root.right);}}
如上所示。
0 0
- 创建层次二叉树
- 二叉树的创建与层次遍历
- 层次创建二叉树及后序遍历
- 二叉树的创建及先根中根后根按层次遍历
- 二叉树的创建,以及递归前中后序以及层次遍历
- 二叉树层次建树.
- 层次遍历二叉树
- 层次遍历二叉树
- 二叉树层次遍历
- 二叉树 层次遍历
- 二叉树层次遍历
- 层次遍历二叉树
- 二叉树层次遍历
- 层次遍历二叉树
- 二叉树层次遍历
- 二叉树层次遍历
- 层次遍历二叉树
- 二叉树层次遍历
- UDP协议通信简单代码分析
- 准备篇--初接任务
- Setting模块深入分析
- Android Api Demos登顶之路(五十五)Service Messenger Service
- rtp丢包重传demo
- 创建层次二叉树
- 黑马程序员——多线程10:多线程相关练习
- iOS中定义成员变量时@property(nonatomic, copy/strong/assign/weak)小结
- ADO对SQL Server 2008数据库的基础操作
- 【LeetCode】141 Linked List Cycle (java实现)
- IOS-开发日志-UITextField属性
- 发送邮件代码
- Qt剪贴板复制失败的问题。
- 放苹果