题目:

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

结点的定义如下:

struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
};

思路:

对于树的问题基本都可以通过递归来解决。

一棵二叉树的深度,等于它的左子树深度和右子树深度的较大者+1;

递归的结束条件就是:该结点为空,深度为0;

代码:

struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
}; int TreeDepth(TreeNode* pRoot){
if(pRoot==NULL)
return 0;
int left=TreeDepth(pRoot->left);
int right=TreeDepth(pRoot->right);
return left>right?(left+1):(right+1);
}

在线测试OJ:

http://www.nowcoder.com/books/coding-interviews/435fb86331474282a3499955f0a41e8b?rp=2

AC代码:

/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if(pRoot==NULL)
return 0;
int left=TreeDepth(pRoot->left);
int right=TreeDepth(pRoot->right); return left>right?(left+1):(right+1);
}
};

最新文章

  1. stm32定时器实现60秒定时秒表
  2. jquery this 和 event.target 区别
  3. 手机端开发icon的问题
  4. 朝花夕拾-android 从手机选择图片或拍照设置头像
  5. final specifier (since C++11)
  6. Java 线程池学习
  7. fork();
  8. CSDN博客排名第一名,何许人也
  9. /usr 的由来及/usr目录结
  10. 关于java中的==,equals()
  11. 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
  12. Linux 进程间通信(包含一个经典的生产者消费者实例代码)
  13. 慢慢来写SpringMVC基本项目
  14. 201621123040《Java程序设计》第4周学习总结
  15. 6. VIM 系列 - 全局搜索(ctrlsf.vim)
  16. 1.8分布式集群模式基础(VM安装多台服务器)
  17. 2019.03.25 bzoj4572: [Scoi2016]围棋(轮廓线dp)
  18. Microsoft Azure Machine Learning Studio
  19. table 如何不越过父级div
  20. Python 函数的作用域

热门文章

  1. Docker入门到实战
  2. Dfs【P2052】 [NOI2011]道路修建
  3. File Associations
  4. PlayMaker的Transition和Global Transition
  5. BZOJ4554 HEOI2016游戏
  6. luoguP4206 [NOI2005]聪聪与可可 期望概率DP
  7. 20162328WJH实验五网络编程与安全实验报告
  8. poj 1703 并查集
  9. Java并发(二):Java内存模型
  10. BSGS算法+逆元 POJ 2417 Discrete Logging