-
Notifications
You must be signed in to change notification settings - Fork 0
/
Leetcode Problem 104 Maximum Depth of Binary Tree.txt
65 lines (53 loc) · 1.61 KB
/
Leetcode Problem 104 Maximum Depth of Binary Tree.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Leetcode 104: Maximum Depth of Binary Tree
Description: 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.
Note: A leaf is a node with no children.
Example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its depth = 3.
Hint: Maintain global variable to record max height.
Make helper function and call recursively left and right node and current height.
Increament the current height in each recrusive call and check if we need to update the max height.
Solution:
/**
* Definition for a binary tree node.
* public class TreeNode {
* public int val;
* public TreeNode left;
* public TreeNode right;
* public TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int maxHeight;
public Solution()
{
maxHeight = 0;
}
public int MaxDepthRecursive(TreeNode root,int currentHeight)
{
if(root == null)
{
return maxHeight;
}
currentHeight += 1;
if(currentHeight > maxHeight)
{
maxHeight = currentHeight;
}
//Console.WriteLine("CurrentNode: "+ root.val+ " CurrentHeight: "+currentHeight+ " MaxHeight: "+ maxHeight);
int leftHeight = MaxDepthRecursive(root.left,currentHeight);
int rightHeight = MaxDepthRecursive(root.right,currentHeight);
return maxHeight;
}
public int MaxDepth(TreeNode root)
{
int result = MaxDepthRecursive(root,0);
return result;
}
}