腾讯总结:20 道题帮你一举拿下二叉树算法题

20 道题帮你一举拿下二叉树算法题(附源代码

附面试思维导图:

第一题:求二叉树中的节点个数

第二题:求二叉树的最大层数(最大深度)

第三题:先序遍历/前序遍历

第四题:中序遍历

第五题:后序遍历

第六题:分层遍历

第七题:求二叉树第K层的节点个数

第八题:求二叉树第K层的叶子节点个数

第九题:判断两棵二叉树是否结构相同

第十题:判断二叉树是不是平衡二叉树

第十一题: 求二叉树的镜像

第十二题:求二叉树中两个节点的最低公共祖先节点

第十三题:求二叉树的直径

第十四题:由前序遍历序列和中序遍历序列重建二叉树

第十五题: 判断二叉树是不是完全二叉树

第十六题:树的子结构

第十七题:二叉树中和为某一值的路径

第十八题:二叉树的下一个结点

第十九题:序列化二叉树

第二十题:二叉搜索树的第k个结点

第一题:求二叉树中的节点个数

递归解法:

(1)如果二叉树为空,节点个数为0

(2)如果不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1

参考代码如下:

public static int getNodeNumRec(TreeNode root) {
 if (root == null) {
 return 0;
 } 
 return getNodeNumRec(root.left) + getNodeNumRec(root.right) + 1;
}

第二题:二叉树的最大层数(最大深度)

递归解法 :

(1)如果二叉树为空,二叉树的深度为0

(2)如果二叉树不为空,二叉树的深度 = max(左子树深度, 右子树深度) + 1

参考代码如下:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 * int val;
 * TreeNode left;
 * TreeNode right;
 * TreeNode(int x) { val = x; }
 * }
 */
class Solution {
 public int m
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值