[剑指offer]二叉树的深度

ゞ 浴缸里的玫瑰 2021-11-22 09:28 363阅读 0赞

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

  1. /*
  2. struct TreeNode {
  3. int val;
  4. struct TreeNode *left;
  5. struct TreeNode *right;
  6. TreeNode(int x) :
  7. val(x), left(NULL), right(NULL) {
  8. }
  9. };*/
  10. class Solution {
  11. public:
  12. int TreeDepth(TreeNode* p)
  13. {
  14. if(p==NULL)return 0;
  15. return max(TreeDepth(p->left),TreeDepth(p->right))+1;
  16. }
  17. };
  18. //非递归写法:层次遍历
  19. class Solution {
  20. public:
  21. int TreeDepth(TreeNode* p)
  22. {
  23. if(p==NULL)return 0;
  24. queue<TreeNode*> q;
  25. q.push(p);
  26. int depth = 0, count = 0, nextCount = 1;
  27. while(q.size()!=0){
  28. TreeNode *pTop = q.front();
  29. q.pop();
  30. count++;
  31. if(pTop->left != NULL){
  32. q.push(pTop->left);
  33. }
  34. if(pTop->right != NULL){
  35. q.push(pTop->right);
  36. }
  37. if(count == nextCount){
  38. nextCount = q.size();
  39. count = 0;
  40. depth++;
  41. }
  42. }
  43. return depth;
  44. }
  45. };

发表评论

表情:
评论列表 (有 0 条评论,363人围观)

还没有评论,来说两句吧...

相关阅读

    相关 offer 深度

    [剑指offer题型分类及各题的代码及解题思路][offer] 1、题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树...

    相关 Offer | 深度

    一、题目 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 二、思路 (1) 递归的思想适合

    相关 offer:深度

    题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 AC C++ Solution:

    相关 Offer-深度

    题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路—使用堆栈:使用堆栈依次压入