二叉树常见题目

“从0开始做LeetCode”之二叉树常见题目

1.实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式

递归
打印时机——>先序,中序,后序

二叉树常见题目

非递归

先序
二叉树常见题目
中序
二叉树常见题目

二叉树常见题目
后序

两个栈:
中左右——>中右左——>左右中
二叉树常见题目

2.直观打印一棵树(用处不大)

3.找后继节点或者前驱

二叉树常见题目

中序:左中右
后继节点,前驱节点

后继:

  • 如果有右子树,则为右子树最左的节点
  • 如果没有右子树,则往上找,父节点的左孩子是他就停

前驱:

  • 如果有左子树,则为左子树最右的节点
  • 如果没有左子树,则往上找,父节点的右孩子是他就停

二叉树常见题目
二叉树常见题目
二叉树常见题目

4.介绍二叉树的序列化和反序列化

按先序、中序、后序

二叉树常见题目
二叉树常见题目
二叉树常见题目
二叉树常见题目
二叉树常见题目

按层序列化

二叉树常见题目

5.判断一颗二叉树是否是平衡二叉树

平衡二叉树:左子树和右子树高度差最多相差一
二叉树常见题目
套路:递归函数很好用
收集左子树的信息,再收集右子树的信息

二叉树常见题目

二叉树常见题目
二叉树常见题目
二叉树常见题目

5.判断一颗数是否是搜索二叉树、判断一棵树是否是完全二叉树

搜索二叉树

左子树都比他小,右子树都比他大 即搜索二叉树

二叉树中序遍历,是依次升序的 即搜索二叉树

在非递归中序遍历里面改就行了
二叉树常见题目

完全二叉树

按层遍历

  1. 有右孩子,没有左孩子,不是完全二叉树
  2. 有左没右,后面遇到的所有节点必须都是叶节点,否则不是完全二叉树

二叉树常见题目
二叉树常见题目

7.已知一颗完全二叉树,求其节点的个数

二叉树常见题目
二叉树常见题目
二叉树常见题目
时间复杂度:O((log N)^2)
二叉树常见题目