目录:
二叉树的遍历
各种二叉树的判断
树形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)

测试结果:

本文详细讲解了二叉树的迭代和非递归遍历方法,包括前序、中序和后序遍历,并探讨了如何通过树形DP解决搜索二叉树、满二叉树和平衡二叉树的判断问题。深入解析了深度优先遍历(DFS)与宽度优先遍历(BFS)。
577

被折叠的 条评论
为什么被折叠?



