JAVA二叉树的创建以及各种功能的实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA二叉树的创建以及各种功能的实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3148字,纯文字阅读大概需要5分钟。
内容图文
直接上代码了,代码说得很清楚了
package BTree; public class BTree { private Node root; private class Node { private Node lchild; private Node rchild; private int data; public Node(int data) { this.lchild = null; this.rchild = null; this.data = data; } } public BTree() { root = null; } public Node getNode() { return root; } public void createTree(Node node, int data) { if (root == null) { root = new Node(data); } else { if (data < node.data) { if (node.lchild == null) { node.lchild = new Node(data); } else { createTree(node.lchild, data); } } else { if (node.rchild == null) { node.rchild = new Node(data); } else { createTree(node.rchild, data); } } } } /*前序遍历*/ public void PreOrder(Node node) { if (node != null) { System.out.print(node.data + " "); PreOrder(node.lchild); PreOrder(node.rchild); } } /*中序遍历*/ public void InOrder(Node node) { if (node != null) { InOrder(node.lchild); System.out.print(node.data + " "); InOrder(node.rchild); } } /*后序遍历*/ public void TailOrder(Node node) { if (node != null) { TailOrder(node.lchild); TailOrder(node.rchild); System.out.print(node.data + " "); } } /*二叉树高度*/ public int Depth(Node node){ int dl = 0,dr =0; if(node!=null){ dl = Depth(node.lchild); dr = Depth(node.rchild); if(dl>dr) return dl+1; return dr+1; } return 0; } /*节点的个数*/ public int Point(Node node){ if(node!=null){ return Point(node.lchild)+Point(node.rchild)+1; } return 0; } /*叶子结点的个数*/ public int Leaf(Node node){ if(node==null) return 0; boolean flag = (node.lchild==null&&node.rchild==null); if(flag) return Leaf(node.lchild)+Leaf(node.rchild)+1; return Leaf(node.lchild)+Leaf(node.rchild); } /*出度为一的节点个数*/ public int oneDegree(Node node){ if(node==null) return 0; boolean flag = (node.lchild==null&&node.rchild!=null)||(node.lchild!=null&&node.rchild==null); if(flag) return oneDegree(node.lchild)+oneDegree(node.rchild)+1; return oneDegree(node.lchild)+oneDegree(node.rchild); } /*出度为二的节点个数*/ public int twoDegree(Node node){ if(node==null) return 0; boolean flag = (node.lchild!=null&&node.rchild!=null); if(flag) return twoDegree(node.lchild)+twoDegree(node.rchild)+1; return twoDegree(node.lchild)+twoDegree(node.rchild); } }
package BTree; public class BTreeDemo { /** * @param args */ public static void main(String[] args) { int [] a ={4,3,2,6,11,8,9,10,1,5}; //int [] a = {1,2,3,4,5}; BTree bt = new BTree(); for(int i=0;i<a.length;i++){ bt.createTree(bt.getNode(), a[i]); } System.out.print("前序遍历:"); bt.PreOrder(bt.getNode()); System.out.println(); System.out.print("中序遍历:"); bt.InOrder(bt.getNode()); System.out.println(); System.out.print("后序遍历:"); bt.TailOrder(bt.getNode()); System.out.println(); System.out.println("二叉树的高度:"+bt.Depth(bt.getNode())); System.out.println("节点的个数:"+bt.Point(bt.getNode())); System.out.println("叶子节点个数:"+bt.Leaf(bt.getNode())); System.out.println("出度为一的节点个数:"+bt.oneDegree(bt.getNode())); System.out.println("出度为二的节点个数:"+bt.twoDegree(bt.getNode())); } }
前序遍历:4 3 2 1 6 5 11 8 9 10 中序遍历:1 2 3 4 5 6 8 9 10 11 后序遍历:1 2 3 5 10 9 8 11 6 4 二叉树的高度:6 节点的个数:10 叶子节点个数:3 出度为一的节点个数:5 出度为二的节点个数:2
原文:http://www.cnblogs.com/liyinggang/p/4993060.html
内容总结
以上是互联网集市为您收集整理的JAVA二叉树的创建以及各种功能的实现全部内容,希望文章能够帮你解决JAVA二叉树的创建以及各种功能的实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。