二叉树的深度python_二叉树的最大深度(python实现)

题目描述:

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值