用Java实现二叉树

计算机科学 中,二叉树 是每个节点最多有两个子树 的有序树 。通常子树被称作“左子树”(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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值