搞懂平衡二叉树的左旋右旋双旋(Java实现)

刚看到韩顺平老师的数据结构与算法对于平衡二叉树的讲解(最后会附上地址),有如下理解,希望能帮助大家!哪里需要改正的欢迎指正!

平衡二叉树:一种二叉排序树(BST Binary Sort Tree)的升级,传统的二叉排序树容易形成类似链表的结构,造成平均查询次数较高,所以引入平衡二叉树,使得左右子树的高度差不超过1;
在这里插入图片描述我们知道了平衡二叉树的原理之后,就要在添加结点后就要判断是否需要将此树转化成平衡二叉树!如下例:4,3,5,2,1,0
在这里插入图片描述如图,当添加到1这个结点的时候,4的左子树高为2,4的右子树高为0。 两者高度差为2,此时这棵树不是平衡二叉树,那么就需要将其转换成平衡二叉树(先按照这个例子来进行,下面会说明其他情况):具体操作如下:
先将必要类和方法写出:

class Node{
   
	int value;
	Node left;
	Node right;
	public Node(int value) {
   
		super();
		this.value = value;
	}
	//添加结点
	public void add(Node node) {
   
		if(node==null) {
   
			System.out.println("此结点为空,不可添加");	
			return;
		}
		if(this.value>node.value) {
   
			if(this.left==null) {
   
				this.left=node;
			}else {
   
				this.left.add(node);
			}
		}else {
   
			if(this.right==null) {
   
				this.right=node;
			}else {
   
				this.right.add(<
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值