Java 构建二叉树
2015-10-01 20:42
615 查看
输入一串序列,构建二叉树(该序列为二叉树层次遍历的结果)
Input: 8,8,7,9,2,#,#,#,#,4
Output:
![](https://img-blog.csdn.net/20151001203633471?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
节点:
创建树:
测试:
结果:
8
8
9
2
4
7
Input: 8,8,7,9,2,#,#,#,#,4
Output:
节点:
class TreeNode { public TreeNode left; public TreeNode right; public char val; public TreeNode(char val) { this.val = val; } @Override public String toString() { // TODO Auto-generated method stub return "" + val; } }
创建树:
public static TreeNode createTree(String str) { str = str.replaceAll(",", ""); TreeNode node = null; TreeNode head = null; Queue<TreeNode> queen = new ArrayDeque<TreeNode>(); boolean left = true; boolean right = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (head == null) { head = new TreeNode(c); node = head; //queen.add(node); } else { TreeNode optional = (c == '#') ? null : new TreeNode(c); if (left) { left = false; right = true; TreeNode t = node; t.left = optional; } else if (right) { left = true; right = false; TreeNode t = node; t.right = optional; node = queen.poll(); } if(optional!=null){ queen.add(optional); } } } return head; }
测试:
public static void main(String[] args) { TreeNode head = createTree("8,8,7,9,2,#,#,#,#,4".replaceAll(",", "")); print(head); } private static void print(TreeNode head) { if (head != null) { System.out.println(head.val); print(head.left); print(head.right); } }
结果:
8
8
9
2
4
7
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统