【LeetCode】二叉树的深度 Java 题解
题目描述
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
复制代码
思路分析
今天的每日一题是求二叉树深度,求二叉树的深度,需要遍历整个树所有的节点。常见的遍历树所有节点的方法有 DFS,BFS。
DFS 全称是 Depth First Search,中文名是深度优先搜索,是一种用于遍历或搜索树或图的算法。所谓深度优先,就是说每次都尝试向更深的节点走。我们一般使用递归到方式实现 DFS 算法。
BFS 全称是 Breadth First Search,中文名是宽度优先搜索,也叫广度优先搜索。我们一般使用队列俩实现 BFS 算法。
具体到这个题目,DFS 方法采用自底向上的思路遍历,分别求出左子树和右子树的最大深度,并求出最大值。
BFS 方法采用自顶向下的思路遍历,根节点的高度是 1,高度逐层递增,容易理解。
通过代码
DFS 解法
复制代码
BFS 解法
复制代码
总结
DFS 解法的时间复杂度是 O(n) , 空间复杂度是 O(n)
BFS 解法的时间复杂度是 O(n) , 空间复杂度是 O(n)
二叉树是最常见到考察题目,常见问题我们一定要多练习,熟练掌握,才能胸有成竹。
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/0f34e38370df575de4c90dd58】。文章转载请联系作者。
评论