二叉树–总结
二叉树的主要知识点为:
- 二叉树的宽度 (已补坑)
- 二叉树的高度(已补坑)(本坑往下拉!!!)
- 先序、中序、后序的递归和非递归实现(已补坑)
- 搜索二叉树
- 完全二叉树
6. 满二叉树(补坑) - 平衡二叉树
然后加上做左神的四个例题:
- 查找两个节点的最初公共节点‘(已补坑)
- 查找一个节点的后继节点
- 序列化与反序列化
- 折纸
二叉树的宽度
求二叉树的宽度即查找二叉树节点最多的那一层,并返回其节点数。
二叉树的高度
求二叉树的高度即查询树的层数。
下面的代码采用了左神的超牛递归套路,当然基础的递归求解也是正确的。求二叉树的高度时采用递归套路看不出来这个套路有多牛,甚至看着还有点麻烦,但到后面比较复杂的题目时,就比较牛啦!
注意:(代码可能有bug,还没有用测试器跑。坑慢慢补)
(补坑)代码正确,已验证。
public class TreeHeight {
public static class ReturenData{
public int height;
public ReturenData(int he){
height = he;
}
}
public static int Height(Node head){
ReturenData data = process(head);
return data.height;
}
public static ReturenData process(Node x){
if(x==null){
return new ReturenData(0);
}
ReturenData leftData = process(x.left);
ReturenData rightData = process(x.right);
int height = Math.max(leftData.height,rightData.height)+1;
return new ReturenData(height);
}
}
先序、中序、后序的递归和非递归实现
(留坑,后面的内容慢慢补)