用Java实现二叉树

来源:互联网 发布:海南出版社和知和行 编辑:程序博客网 时间:2024/06/06 04:24

在计算机科学 中,二叉树 是每个节点最多有两个子树 的有序树 。通常子树被称作“左子树”(left subtree )和“右子树”(right subtree )。二叉树常被用于实现二叉查找树 和二叉堆 。

二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i − 1 个结点;深度为k的二叉树至多有2k − 1 个结点;对任何一棵二叉树T,如果其终端结点数为n 0 ,度为2的结点数为n 2 ,则n 0 = n 2 + 1 。


下面是代码:

/* * @author Zengqy */public class BinaryTree {//节点类class Node{int value;Node left;Node right;Node(int data){this.value=data;left=null;right=null;}}//根节点private Node root;//无参构造函数BinaryTree(){root=null;}//使用一个数组来构造二叉树BinaryTree(int[] a){for(int i:a){insert(i);}}//public void insert(int value){root=insert(root,value);}//将数值插入到二叉树中,比当前结点小或等于当前结点的插在当前结点的左侧, //比当前结点大的数插在当前结点的右侧,每次从根结点开始递归比较。 public Node insert(Node node,int value){if(node==null){node=new Node(value);}else{if(value<=node.value){node.left=insert(node.left,value);}else{node.right=insert(node.right,value);}}return node;}//访问节点private void visit(Node node){if(node==null){return;}int value=node.value;System.out.print(value+" ");}//先序遍历private void preOderTravel(Node node){if(node==null){return;}else{visit(node);preOderTravel(node.left);preOderTravel(node.right);}}//从根节点开始对树进行先序遍历public void preOderTravels(){preOderTravel(root);}public static void main(String[] args){int[] a={2,3,4,232,34,23,5,6,78};BinaryTree bt=new BinaryTree(a);bt.preOderTravels();}}

二叉树的中序遍历、后序遍历只需在代码中先序遍历的基础上修改,即调整visit(node);语句的位置。

0 0
原创粉丝点击