二叉树的最大深度(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)

你可能感兴趣的:(二叉树的最大深度(python实现))