给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
,
3 / 9 20 / 15 7
返回它的最大深度 3 。
思路:这是个很简单的题目,之所以写一篇总结,是因为在编程中遇到了一点认为值得记录的事情。
求最大深度,是要从根节点开始,我们很容易想到递归,只要我知道了左子树和右子树的最大深度,再加上1,就是这个二叉树的最大深度。直到递归到最后一层。
int maxDepth(TreeNode* root) { //int max=0; if(root) { //max+=1; int left = maxDepth(root->left)+1; int right = maxDepth(root->right)+1; return left>right ? left : right; //return maxDepth(root->left)>maxDepth(root->right)?max+maxDepth(root->left):max+maxDepth(root->right); } else return 0; }
程序没什么好说的,重点是我一开始为了使代码看起来简洁,直接将递归函数放到了三目运算符中,导致比较大的数据,运行超过时间限制。个人认为这是因为在一句程序中,就调用了四次函数,所以时间会长。
所以认为最好不要把递归函数和三目运算符一起使用,单独写出来会好点。