递归方法
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def TreeDepth(self, pRoot):
if pRoot is None:
return 0
left = self.TreeDepth(pRoot.left)
right = self.TreeDepth(pRoot.right)
depth = max(left, right) + 1
return depth非递归
按层遍历,利用辅助队列,每一层的节点加入,然后再层中遍历,弹出层中节点,加入层中节点的左右子节点,遍历完一层深度加一。
# -*- 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 is None:
return 0
q = []
depth = 0
q.append(pRoot)
while(len(q) > 0): # 队列为空时说明没有下一层
length = len(q)
for i in range(length): # 遍历层的每个节点看是否有子节点有则加入
current = q.pop(0) # current为当前遍历到的层中节点,取出,注意pop(-1)为默认,这里要pop(0),取出第一个,先入先出
if current.left:
q.append(current.left)
if current.right:
q.append(current.right)
depth += 1
return depth


京公网安备 11010502036488号