数据结构与算法 //二叉树与二叉搜索树

二叉树 binary tree

引入几个概念:

叶子结点 leaf:即最下面的结点,没有子结点,度为0,和树上的叶子一样不再细分。

根节点 root:顾名思义,树根,即最上面的点。所有非空的二叉树中,都有且仅有一个根结点。

root.left即二叉中的左叉,指的是左边的子结点,仅单指一个结点。如root.left、root.right

数据结构与算法 //二叉树与二叉搜索树

在此例中,想得到2,则console.log(root.right.left.val)

满二叉树full binary tree和 完全二叉树complete binary tree

满二叉树:除了叶子结点,每个节点的度都为2,像完整的三角形,形式上是填满的

数据结构与算法 //二叉树与二叉搜索树

完全二叉树:像缺失一部分的三角形,形式上缺失的是右下角的部分,注意缺失的不能是左边的,即最后一层要集中在左边。比如下面的图1和图2是完全二叉树,图3不是

数据结构与算法 //二叉树与二叉搜索树数据结构与算法 //二叉树与二叉搜索树数据结构与算法 //二叉树与二叉搜索树

可见,满二叉树是完全二叉树的一种特殊形式

二叉搜索树 BST binary search tree

每个节点的左侧结点的值小于这个节点,右侧大于。

注意下面这个图不是bst,因为最后一层的6大于5。

数据结构与算法 //二叉树与二叉搜索树

练习题:

剑指 Offer 27

二叉树的镜像  

剑指 Offer 28

对称的二叉树