二叉树篇章之一
Posted 随性girl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树篇章之一相关的知识,希望对你有一定的参考价值。
1.二叉树的基本概念
英文名:binary tree
定义:二叉树,是度为二的树,二叉树的每一个节点最多只有二个子节点,且两个子节点有序。
1:1是15和3的根,15是左节点,3是右节点。
2如何获取到2的值(root.right.left.val)
2.完全二叉树(complete binary tree)
若设二叉树的深度为k,除第k层外,其他各层(1~(k-1)层)的节点数都达到最大值,且第k层所有的节点都连续集中在最左边,这样的树就是完全二叉树。如图:
(图片仅参考网友,侵删)
完全二叉树是一种效率很高的数据结构,而堆是一种完全二叉树或者近似完全二叉树,因此堆的效率也很高;像十分常用的排序算法、Dijkstra算法、Prim算法等都要用堆才能优化,二叉排序树的效率也要借助平衡性来提高,而平衡性是基于完全二叉树的。
3.满二叉树(full binary tree)
分为国内、国外
国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。
国外(国际)定义:如果一棵二叉树的结点要么是叶子结点,要么它有两个子结点,这样的树就是满二叉树。(一棵满二叉树的每一个结点要么是叶子结点,要么它有两个子结点,但是反过来不成立,因为完全二叉树也满足这个要求,但不是满二叉树)
4.二叉搜索树Binary search Tree(BST):
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。
错误示范(以下不是BST):
以上是关于二叉树篇章之一的主要内容,如果未能解决你的问题,请参考以下文章
TreeMap源码分析之一 —— 排序二叉树平衡二叉树红黑树
Java 数据结构 & 算法宁可累死自己, 也要卷死别人 11 二叉树