数据结构_树_基础部分

二叉树

为什么需要树这种数据结构
1)数组存储方式的分析
优点: 通过下标方式访问元素,速度快,对于有序数组,可以使用二分查找提高检索速度;
缺点:如果药检所具体某个值,或者插入值(按一定顺序)会整体移动,效率低
2)链式存储方式
优点:在一定程度上对数组村创世有优化(比如: 插入一个数值节点,只需要将插入节点,连接到表中即可,删除效率高)
缺点:检索式效率低
3)树存储方式
提高存储,读取的效率,比如利用二叉排序树(Binary sort Tree),既可以保证数据的检索速度,又可以保证数据的插入,删除,修改速度

概念

1)树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树
2)二叉树的子节点分为左节点和右节点
3)如果二叉树的所有叶子节点都在最后一层,并且节点总数=2^n-1,则为满二叉树
4)如果二叉树的所有叶子节点都在最后一层活倒数第二层,最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续,则为完全二叉树

二叉树的遍历

1)前序遍历:先输出父节点,在遍历左子树和右子树
2)中序遍历: 先遍历左子树,再输出父节点,在遍历右子树
3)后序遍历: 先遍历左子树,在遍历右子树,最后输出父节点
4)看父节点的顺序可以确定遍历顺序

二叉树遍历应用实例

分析二叉树前序,中序,后序的遍历步骤
1,创建一个二叉树
2.前序遍历
2.1先输出当前节点(初始的时候是root节点)
2.2如果左子节点不为空,则递归继续前序遍历
2.3如果右子节点不为空,则递归前序遍历
3.中序遍历
3.1如果当前节点的左子节点不为空,则递归中序遍历
3.2输出当前节点
3.3如果当前节点的右子节点不为空,则递归中序遍历
4.后序遍历
4.1如果当前节点的左子节点不为空,则递归中序遍历
4.2如果当前节点的右子节点不为空,则递归中序遍历
4.3输出当前节点

代码

class BinaryTree {
	private Node root;
	
	public void setRoot(Node root){
		this.root = root;
	}
	//前序遍历
	public void preOrder(){
		if(this.root != null){
			this.root.preOrder();
		}
		else{
			
		}
	}


	//中序遍历
	public void infixOrder(){
		if(this.root != null){
			this.root.infixOrder();
		}
		else{
			
		}
	}
	//后序遍历
	public void postOrder(){
		if(this.root != null){
			this.root.postOrder();
		}
		else{
			
		}
	}
}
class Node{
	private int no;
	private String name;
	private Node left;
	private Node right;
	private Node(int no,String name){
		this.no = no;
		this.name =name;
	}
	
	public int getNo(){
		return no;
	}

	public void stNo(int no){
		this.no = no;
	}

	public String geName(){
		return name;
	}

	//.....getter settter
	
	//中序遍历(先序,后序思路相同)
	public void infixOrder() {
		//递归向左子树中序遍历
		if(this.left != null) {
			this.left.infixOrder();
		}
		//输出父结点
		System.out.println(this);
		//递归向右子树中序遍历
		if(this.right != null) {
			this.right.infixOrder();
		}
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值