104/111. Maximum / Minimum Depth of Binary Tree

104. Maximum Depth of Binary Tree

My Submissions
Question
Total Accepted: 113363  Total Submissions: 242208  Difficulty: Easy

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

Subscribe to see which companies asked this question

Hide Tags
  Tree Depth-first Search
Hide Similar Problems
  (E) Balanced Binary Tree (E) Minimum Depth of Binary Tree










分析:

深度优先搜索,在写成递归时可以用前序式遍历

当前根节点的最大高度就是左子树有右子树中较大者

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int maxDepth(TreeNode* root) 
    {
        if(root==NULL)
            return 0;//深度优先搜索:前序方式遍历 
        if(root->right == NULL)  
            return maxDepth(root->left)+1;  
        if(root->left == NULL)
            return maxDepth(root->right)+1; 
        
        return 1+max(maxDepth(root->left),maxDepth(root->right));
    }
};


111. Minimum Depth of Binary Tree

My Submissions
Question
Total Accepted: 87963  Total Submissions: 293947  Difficulty: Easy

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.

Subscribe to see which companies asked this question

Hide Tags
  Tree Depth-first Search Breadth-first Search
Hide Similar Problems
  (E) Binary Tree Level Order Traversal (E) Maximum Depth of Binary Tree

分析:

依然深度优先搜索,在写成递归时可以用前序式遍历

当前根节点的最小高度就是左子树有右子树中较小者

/**
 * Definition for a binary tree node.
 * 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==NULL)  
            return 0;  
        if(root->left == NULL)
		    return minDepth(root->right)+1;
	    if(root->right == NULL)
		    return minDepth(root->left)+1;
        return 1+min(minDepth(root->left),minDepth(root->right));  //获取当前节点root的左右子树高度的较小者
    }
};



注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!

原文地址:http://blog.csdn.net/ebowtang/article/details/50332803

原作者博客:http://blog.csdn.net/ebowtang


你可能感兴趣的:(LeetCode,数据结构,算法,面试,二叉树)