美文网首页
leetcode-求取二叉树的最短路径问题

leetcode-求取二叉树的最短路径问题

作者: lintong | 来源:发表于2015-02-10 15:34 被阅读2496次

    该类问题属于树的遍历问题

    题目

    Given a binary tree, find its minimum depth.

    The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

    #include <stdio.h>
    
    //  Definition for binary tree
    struct TreeNode {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    class Solution {
    public:
        int minDepth(TreeNode *root) {
            if(!root){
                return 0;
            }
            int k = GetLength(root, 0);
            return k;
        }
        int GetLength(TreeNode *p, int curLen){
     
    
            int minLeft = -1;
            int minRight = -1;
            if(p->left){
                minLeft = GetLength(p->left, curLen + 1);
            }
            if(p->right){
                minRight = GetLength(p->right, curLen + 1);
            }
            //叶子节点
            if(minLeft == -1 && minRight == -1){
                return curLen + 1;
            }
            //左边没有节点
            if(minLeft == -1){
                return minRight;
            }
            //右边没有节点
            if(minRight == -1){
                return minLeft;
            }
            //两边均有节点,则返回叶子层数量小的 
            if(minLeft > minRight){
                return minRight;
            }
            return minLeft;
        }
    };
    
    int main(){
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:leetcode-求取二叉树的最短路径问题

          本文链接:https://www.haomeiwen.com/subject/bcmjxttx.html