leetcode Maximum Depth of Binary python C++

又来刷下限了。都是很easy的题目。求轻喷~

就是求二叉树的高度问题。

首先想到的就是递归,递归代码超简单啊。

直接上代码:

# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    # @param root, a tree node
    # @return an integer
    def maxDepth(self, root):
        if None == root:
            return 0
        else:
            leftDep = self.maxDepth(root.left)+1
            rightDep = self.maxDepth(root.right)+1
            if leftDep > rightDep:
                return leftDep
            else:
                return rightDep

搞定!

自己又想写个不是递归的,怎能奈何10来分钟都没有思路。只能百度一下了。

啊,一看别人的代码。就是广度遍历不就好了。哎,还是太嫩了。这么简单的问题。

如下链接是原文:C++版

害怕丢失了,特记录在此:

class Solution {
public:
    //二叉树最大深度(层次遍历,遍历一层高度加1)
    int maxDepth(TreeNode *root) {
        int height = 0,rowCount = 1;
        if(root == NULL){
            return 0;
        }
        //创建队列
        queue<treenode*> queue;
        //添加根节点
        queue.push(root);
        //层次遍历
        while(!queue.empty()){
            //队列头元素
            TreeNode *node = queue.front();
            //出队列
            queue.pop();
            //一层的元素个数减1,一层遍历完高度加1
            rowCount --;
            if(node->left){
                queue.push(node->left);
            }
            if(node->right){
                queue.push(node->right);
            }
            //一层遍历完
            if(rowCount == 0){
                //高度加1
                height++;
                //下一层元素个数
                rowCount = queue.size();
            }
        }
        return height;
    }
 
};
自己还是太欠缺,慢慢来吧。多看多思考。老大说我做事有时候应该多思考,看来是没错啊。find the best way to do it


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值