C++学习——满二叉树和完全二叉树
full binary tree 满二叉树
定义:二叉树除了叶结点外所有节点都有两个子节点。
对于满二叉树而言,叶子的个数等于内部结点(非叶结点)+1,写作 L = l + 1
complete binary tree 完全二叉树
定义:从根往下数,除了最下层外都是全满(都有两个子节点),而最下层所有叶结点都向左边靠拢填满。
构造一颗完全二叉树就是**【从上到下,从左往右】**的放置节点。
举例
-
左侧为满二叉树但不是完全二叉树,要补全的话可以给第二层最左节点下加两个子节点,或删除当前最下层的两个节点。
-
右侧是一颗完全二叉树但并不是满二叉树,因为最下层最后一个节点没有兄弟节点,即其父节点只有一个子节点,不满,补满的话再加一个右子节点即可【满二叉树的节点要么没孩子,要有就一定得是俩】。
可【满二叉树的节点要么没孩子,要有就一定得是俩】。