2.5.3 二叉树的基本操作
// 获取树中节点的个数
int size(Node root);// 获取叶子节点的个数
int getLeafNodeCount(Node root);// 子问题思路-求叶子结点个数// 获取第K层节点的个数
int getKLevelNodeCount(Node root,int k);// 获取二叉树的高度
int getHeight(Node root);// 检测值为value的元素是否存在
Node find(Node root, int val);//层序遍历
void levelOrder(Node root);// 判断一棵树是不是完全二叉树
boolean isCompleteTree(Node root)
// 获取树中节点的个数
int size(Node root);
// 获取叶子节点的个数
int getLeafNodeCount(Node root);
// 子问题思路-求叶子结点个数
// 获取第K层节点的个数
int getKLevelNodeCount(Node root,int k);
// 获取二叉树的高度
int getHeight(Node root);
放oj上的话 法二有可能溢出 因为法二计算了2遍 法一直接把当前的记录下来避免了重复运算造成的算法效率的降低
// 检测值为value的元素是否存在
Node find(Node root, int val);
//层序遍历
void levelOrder(Node root);
// 判断一棵树是不是完全二叉树
boolean isCompleteTree(Node root)
2.6 二叉树相关oj题
- 检查两颗树是否相同。OJ链接
- 另一颗树的子树。OJ链接
if(root==null)易漏掉 会导致空指针异常 - 翻转二叉树。OJ链接
- 判断一颗二叉树是否是平衡二叉树。OJ链接
可以在求树高度的过程中判断树是否平衡
- 对称二叉树。OJ链接
- 二叉树的构建及遍历。OJ链接
注意:public static int i
最好把static去掉 否则当有多个测试用例时 i无法重新为0 - 二叉树的分层遍历 。OJ链接
层序遍历如下:
但此题要求返回List<List < Integer > >
代码应更新如下:
- 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 。OJ链接
- 根据一棵树的前序遍历与中序遍历构造二叉树。 OJ链接
- 根据一棵树的中序遍历与后序遍历构造二叉树([课堂不讲解,课后完成作业])。OJ链接
- 二叉树创建字符串。OJ链接
- 二叉树前序非递归遍历实现 。OJ链接
- 二叉树中序非递归遍历实现。OJ链接
- 二叉树后序非递归遍历实现。OJ链接