1.题目描述
求二叉树的深度
2.思路
(1)非递归借助层序遍历
(2)递归,深度 = max(左子树深度,右子树深度)+1
3.代码
非递归版:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def TreeDepth(self, pRoot):
# write code here
if pRoot==None:
return 0
from collections import deque
dq = deque()
numofnode, depth = 1, 0
dq.append(pRoot)
while numofnode!=0:
for i in range(numofnode):
node = dq.popleft()
if node.left:
dq.append(node.left)
if node.right:
dq.append(node.right)
numofnode = len(dq)
depth += 1
return depth
递归版:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.depth = 0
def TreeDepth(self, pRoot):
# write code here
if pRoot==None:
return 0
leftdepth = self.TreeDepth(pRoot.left)
rightdepth = self.TreeDepth(pRoot.right)
return max(leftdepth,rightdepth)+1