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

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

题目

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 

//  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-求取二叉树的最短路径问题)