构造排序二叉树,并按行从左到右输出
来源:互联网 发布:联通网络整合营销包括 编辑:程序博客网 时间:2024/05/16 18:16
import java.util.LinkedList;import java.util.Queue;public class Main { class BinaryNode { int val; BinaryNode left; BinaryNode right; public BinaryNode(int val) { this.val = val; } }//BinaryNode private BinaryNode root;//根节点,这个属性很重要 private void buildOrderTree(int[] vals) { for (int i = 0; i < vals.length; i++) { insert(vals[i]); } }//build private void insert(int val) { root = insert(root, val); }//insert private BinaryNode insert(BinaryNode root, int val) { if (root == null) return new BinaryNode(val); if (val <= root.val) root.left = insert(root.left, val);//把该结点赋值给root结点的左孩子 else //把该结点赋值给root结点的右孩子 root.right = insert(root.right, val);//这里是递归,2在栈中没弹出来,4压入栈,4弹出栈后,栈中还有2,返回2 return root; }//insert public void printTreeLineByLine(BinaryNode root) { Queue<BinaryNode> queue = new LinkedList<BinaryNode>();//把待打印的结点放在队列中 BinaryNode curNode; queue.offer(root); int curNum = 1;//当前行未打印的节点数 int next = 0;//下一行待打印的节点数 while (!queue.isEmpty()) { curNode = queue.poll(); System.out.print(curNode.val + " "); curNum--; if (curNode.left != null) { queue.offer(curNode.left); next++; } if (curNode.right != null) { queue.offer(curNode.right); next++; } if (curNum == 0) { curNum = next; next = 0; System.out.println();//换行 } }//while }//printTreeLineByLine public static void main(String[] args) { Main bst = new Main();// int[] arr = {2, 4, 5, 1, 3,6,7,8,9,10,12,13,14,15,16,17,18}; int[] arr = {2, 4, 5, 1, 3, 6, 7, 8};// int[] arr = {2, 4, 5, 1, 3}; bst.buildOrderTree(arr); bst.printTreeLineByLine(bst.root);//用到了root属性 }}//2//1 4//3 5//6//7//8
参考:http://www.cnblogs.com/hapjin/p/5738354.html
阅读全文
0 0
- 构造排序二叉树,并按行从左到右输出
- 构造完全二叉树,并按行从左到右输出
- 构造二叉树并输出
- 构造排序二叉树并输出前序遍历、中序遍历、后序遍历
- 由先序和中序构造二叉树并后序输出
- 给定先序和后续,构造出一颗二叉树并输出中序序列
- 通过前序和中序构造二叉树,并输出后序
- 由初始序列构造二叉搜索树,输出层次遍历,并判断是否是完全二叉树
- 构造二叉树的抽象数据类型对于给定的先序序列和中序序列,构造二叉树,并按层输出所有结点内容,要求每层结点输出一行按层输出上述二叉树所表示的森林的所有结点内容
- 从上到下,从左到右输出二叉树的结点
- 从有序队列构造平衡二叉树
- 从数组构造二叉树代码
- 排序二叉树的构造与遍历
- c语言创建并输出二叉树
- 建立二叉树,并层次遍历输出
- 从层序中序重建二叉树输出先序后序
- c语言输入三个分数,并进行按从高到低等级进行排序,再输出结果
- 输入6个字符串,并对它们按从大到小的顺序排序后输出。
- Angular4.x 引入第三方 JS
- 适用于STL泛型的归并(合并排序)排序算法设计
- mysql的merge存储引擎应用
- Glide 4.0源码分析(1)
- 排序算法---直接插入排序
- 构造排序二叉树,并按行从左到右输出
- MATLAB绘图
- 1
- linux部署web项目到tomcat下(图文详解)
- 数据结构与算法之栈
- SiteSucker使用记录
- 配置wamp
- NodeMCU刷uart模块掉坑~~~
- ForeSpider数据采集系统如何采集源码中看不到的数据