首页 » 编程之美 » 正文

[leetcode_111]Minimum Depth of Binary Tree

计算二叉树的最短路径,一层一层的算。我用的应该算是搜索加剪枝,但是如果有宽度搜索,或许时间更快,但是需要额外的空间。

class Solution {
public:
    int min;
    void MoveTo(TreeNode *node,int steps) {
        if(node->left == NULL && node->right == NULL) {
            if(steps < min) {
                min = steps;
            }
            return;
        }
        if(node->left != NULL && steps+1 < min) {
            MoveTo(node->left,steps+1);
        }
        if(node->right != NULL && steps+1 < min) {
            MoveTo(node->right,steps+1);
        }
    }
    int minDepth(TreeNode *root) {
        min = 999999999;
        if(root == NULL)
            return 0;
        MoveTo(root,1);
        return min;
    }
};

发表评论