题目描述:
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回它的最大深度 3 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree
代码:
import tree
if __name__=='__main__':
treenode=[3,9,20,None,None,15,7]
T=tree.Tree()
for i in treenode:
T.add(i)
height=T.height
print("二叉树的高度为:"+str(height))
运行结果:
二叉树的高度为:3
自定义的二叉树结构(tree):
class Node(object):
def __init__(self,e=-1,lchild=None,rchild=None):
self.e=e
self.lchild=lchild
self.rchild=rchild
#树类
class Tree(object):
def __init__(self,root=Node(-1,None,None)):
self.root=root
self.height=0
self.MyQueue=[]
#按层序添加节点到树中
def add(self,e):
node=Node(e)
if self.root.e==-1:
self.root=node
if not node.e==None:
self.height+=1
self.MyQueue.append(self.root)
else:
treeNode=self.MyQueue[0]
if treeNode.lchild==None:
treeNode.lchild=node
if not node.e==None:
self.height+=1
self.MyQueue.append(treeNode.lchild)
else:
treeNode.rchild=node
self.MyQueue.append(treeNode.rchild)
self.MyQueue.pop(0)
#层序遍历
def level(self):
if self.root==None:
return
MQ=[]
node=self.root
MQ.append(node)
while MQ:
node=MQ.pop(0)
print(node.e)
if node.lchild:
MQ.append(node.lchild)
if node.rchild:
MQ.append(node.rchild)
#前序遍历
def front(self,root):
if root==None:
return
print(root.e)
self.front(root.lchild)
self.front(root.rchild)
#中序遍历
def middle(self,root):
if root==None:
return
self.middle(root.lchild)
print(root.e)
self.middle(root.rchild)
#后序遍历
def post(self,root):
if root==None:
return
self.post(root.lchild)
self.post(root.rchild)
print(root.e)