题目链接:
题目描述:
解题思路:
解法:递归的遍历一棵数的左右子树。
已经AC的代码:
public class treeDepth39 {
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public int TreeDepth(TreeNode root) {
if(root == null) {
return 0;
}
int nLeft = TreeDepth(root.left);
int nRight = TreeDepth(root.right);
if(nLeft > nRight) {
return nLeft + 1;
}else {
return nRight + 1;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
// 1
// / \
// 2 3
// / \ \
// 4 5 6
// /
// 7
treeDepth39 treeDepth = new treeDepth39();
TreeNode root = treeDepth.new TreeNode(1);
TreeNode root_2 = treeDepth.new TreeNode(2);
TreeNode root_3 = treeDepth.new TreeNode(3);
TreeNode root_4 = treeDepth.new TreeNode(4);
TreeNode root_5 = treeDepth.new TreeNode(5);
TreeNode root_6 = treeDepth.new TreeNode(6);
TreeNode root_7 = treeDepth.new TreeNode(7);
root.left = root_2;
root.right = root_3;
root_2.left = root_4;
root_2.right = root_5;
root_3.right = root_6;
root_5.left = root_7;
System.out.println(treeDepth.TreeDepth(root));
}
}
Python的两种解法:
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def TreeDepth(self, pRoot):
'''
得到二叉树的最大深度,栈,深度优先遍历
Args:
root: 根结点
Returns: int,树的最大深度
'''
if not pRoot:
return 0
stack = []
currentDeep = 1
getMaxDeep = 1
stack.append((pRoot, currentDeep))
while stack:
node, currentDeep = stack.pop()
getMaxDeep = max(currentDeep, getMaxDeep)
if node.left:
stack.append((node.left, currentDeep + 1))
if node.right:
stack.append((node.right, currentDeep + 1))
return getMaxDeep
def TreeDepth1(self, pRoot):
'''
递归解法
Args:
pRoot:
Returns:
'''
if not pRoot:
return 0
left_deep = self.TreeDepth1(pRoot.left) + 1
right_deep = self.TreeDepth1(pRoot.right) + 1
return max(left_deep, right_deep)
if __name__ == "__main__":
root = TreeNode(3)
node1 = TreeNode(9)
node2 = TreeNode(20)
node3 = TreeNode(15)
node4 = TreeNode(7)
root.left = node1
root.right = node2
node1.left = node3
node1.right = node4
sol = Solution()
print(sol.TreeDepth1(root))