• 剑指offer python版 二叉树的深度


    from collections import deque
    
    
    def get_depth(tree):
        if not tree:
            return 0
        if not tree.left and not tree.right:
            return 1
        return 1 + max(get_depth(tree.left), get_depth(tree.right))
    
    
    class TreeNode(object):
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    
    
    class Tree(object):
        def __init__(self):
            self.root = None
    
        def construct_tree(self, values=None):
            if not values:
                return None
            self.root = TreeNode(values[0])
            queue = deque([self.root])
            leng = len(values)
            nums = 1
            while nums < leng:
                node = queue.popleft()
                if node:
                    node.left = TreeNode(values[nums]) if values[nums] else None
                    queue.append(node.left)
                    if nums + 1 < leng:
                        node.right = TreeNode(values[nums + 1]) if values[nums + 1] else None
                        queue.append(node.right)
                        nums += 1
                    nums += 1
    
        def bfs(self):
            ret = []
            queue = deque([self.root])
            while queue:
                node = queue.popleft()
                if node:
                    ret.append(node.val)
                    queue.append(node.left)
                    queue.append(node.right)
            return ret
    
    
    def bfs(tree):
        if not tree:
            return None
        stack = [tree]
        ret = []
        while stack:
            node = stack.pop(0)
            ret.append(node.val)
            if node.left:
                stack.append(node.left)
            if node.right:
                stack.append(node.right)
        return ret
    
    if __name__ == '__main__':
        t = Tree()
        t.construct_tree([1, 2, 3])
        print t.bfs()
    print get_depth(t.root)
  • 相关阅读:
    ADO.NET连接SQLSERVER数据库 连接字符串
    HttpModule的作用
    MyBatis框架简介
    idea成功部署项目到tomcat后却无法访问
    Application context not configured this file
    tomcat体系结构
    MySql语法概述
    MySql数据库事务
    split(",")与split(",",-1)的区别
    Cookie,session的原理及用法
  • 原文地址:https://www.cnblogs.com/xzm123/p/9876572.html
Copyright © 2020-2023  润新知