目录:
二叉树的遍历
各种二叉树的判断
树形DP的灵活运用
一. 二叉树的遍历
1.二叉树的迭代遍历(优雅)
前序:头-左-右 --- 1 2 4 5 3 6 7
中序:左-头-右 --- 4 2 5 1 6 3 7
后序:左-右-头 --- 4 5 2 6 7 3 1
迭代遍历测试结果
2.非递归遍历
非递归前序: ---1 2 4 5 3 6 7
非递归中序: --- 4 2 5 1 6 3 7
非递归后续: --- 4 5 2 6 7 3 1
非递归遍历测试结果
3.深度优先遍历 DFS(Depth-First-Search)== 先序遍历 == 头-左-右(上面已有两种方式
4.宽度优先遍历 BFS (Breadth-First-Search) ,一行一行扫下来 --- 1 2 3 4 5 6 7
测试结果:
二. 二叉树的经典题目
1>如何判断一颗二叉树是否为搜索二叉树Binary Search Tree?
答:用中序遍历,若为升序,则为搜索二叉树,反之不是。
解法二:树形DP迭代求解
测试结果:
2>树形DP递归判断是否为满二叉树:
验证 2^h-1==n是否成立即可(h=height树的高度,n=nodes节点数量),成立则为满二叉树
测试结果:
3>树形DP递归判断是否为平衡二叉树:左子树和右子树高度相差小于等于1的二叉树
条件:左、右子树均为平衡二叉树。且左右子树高度差小于2(小于等于1)
测试结果: