Java知识【二叉树&二叉查找树&平衡二叉树】

导读:本篇文章讲解 Java知识【二叉树&二叉查找树&平衡二叉树】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1,二叉树

  • 二叉树的特点

    • 二叉树中,任意一个节点的度要小于等于2

      • 节点: 在树结构中,每一个元素称之为节点

      • 度: 每一个节点的子节点数量称之为度

  • 二叉树结构图Java知识【二叉树&二叉查找树&平衡二叉树】

     

2,二叉查找树

Java知识【二叉树&二叉查找树&平衡二叉树】

 

  • 二叉查找树的特点

    • 二叉查找树,又称二叉排序树或者二叉搜索树

    • 每一个节点上最多有两个子节点

    • 左子树上所有节点的值都小于根节点的值

    • 右子树上所有节点的值都大于根节点的值

  • 二叉查找树结构图Java知识【二叉树&二叉查找树&平衡二叉树】

    二叉查找树和二叉树对比结构图 Java知识【二叉树&二叉查找树&平衡二叉树】 

    二叉查找树添加节点规则

  • 小的存左边

  • 大的存右边

  • 一样的不存

3,平衡二叉树

  • 平衡二叉树的特点

    • 二叉树左右两个子树的高度差不超过1

    • 任意节点的左右两个子树都是一颗平衡二叉树

  • 平衡二叉树旋转

    • 旋转触发时机

      • 当添加一个节点之后,该树不再是一颗平衡二叉树

    • 左旋

      • 就是将根节点的右侧往左拉,原先的右子节点变成新的父节点,并把多余的左子节点出让,给已经降级的根节点当右子节点

Java知识【二叉树&二叉查找树&平衡二叉树】 Java知识【二叉树&二叉查找树&平衡二叉树】

 

右旋

  • 就是将根节点的左侧往右拉,左子节点变成了新的父节点,并把多余的右子节点出让,给已经降级根节点当左子节点

 Java知识【二叉树&二叉查找树&平衡二叉树】

Java知识【二叉树&二叉查找树&平衡二叉树】 平衡二叉树和二叉查找树对比结构图 Java知识【二叉树&二叉查找树&平衡二叉树】

平衡二叉树旋转的四种情况

  • 左左

    • 左左: 当根节点左子树的左子树有节点插入,导致二叉树不平衡

    • 如何旋转: 直接对整体进行右旋即可

Java知识【二叉树&二叉查找树&平衡二叉树】 

左右

  • 左右: 当根节点左子树的右子树有节点插入,导致二叉树不平衡

  • 如何旋转: 先在左子树对应的节点位置进行左旋,在对整体进行右旋

Java知识【二叉树&二叉查找树&平衡二叉树】 

右右

  • 右右: 当根节点右子树的右子树有节点插入,导致二叉树不平衡

  • 如何旋转: 直接对整体进行左旋即可

Java知识【二叉树&二叉查找树&平衡二叉树】 

右左

  • 右左:当根节点右子树的左子树有节点插入,导致二叉树不平衡

  • 如何旋转: 先在右子树对应的节点位置进行右旋,在对整体进行左旋

Java知识【二叉树&二叉查找树&平衡二叉树】 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/120784.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!