二叉树的最大深度

题目

Alt

思路

这道题采用递归很简单,直接上代码吧

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if (root == NULL)
			return 0;
		if (!root->left && !root->right)
			return 1;
		return (max(maxDepth(root->left), maxDepth(root->right))+1);
    }
};

需要补充的是,采用递归实际上是根据DFS(深度优先)的思想解题的,这种方式的缺点在于,如果层数过深(比如所有的点都位于左子树),那么我们很可能保存过多的临时变量,导致栈溢出,这个怎么解释呢
事实上,函数调用的参数是通过栈空间来传递的,在调用过程中会占用线程的栈资源。而递归调用,只有走到最后结束点后函数才能一次退出,而未到达最后的结束点之前,占用的栈空间一直没有释放,如果递归调用的次数太多,就可能导致占用的栈资源超过线程的最大值,从而导致栈溢出,导致程序的异常退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值