zoukankan      html  css  js  c++  java
  • 二叉树

    # 定义一个类 创建一个二叉树
    class Btree:
        def __init__(self,data):
            self.data = data
            self.lchild = None
            self.rchild = None
            
    a = Btree("A")
    b = Btree("B")
    c = Btree("C")
    d = Btree("D")
    e = Btree("E")
    f = Btree("F")
    
    root = a
    a.lchild = b
    a.rchild = c
    b.lchild = d
    b.rchild = e
    c.lchild = f
    # 广度优先遍历
    def
    level_order(root): if not root or root.data is None: return [] else: my_queue=[] re_queue=[] my_queue.append(root) while my_queue: cur_node = my_queue.pop(0) re_queue.append(cur_node.data) if cur_node.lchild: my_queue.append(cur_node.lchild) if cur_node.rchild: my_queue.append(cur_node.rchild) return re_queue level_order(root) # ['A', 'B', 'C', 'D', 'E', 'F']
    
    
    # 前序遍历
    def pre_order(root):
        if root:
            print(root.data, end=" ")
            pre_order(root.lchild)
            pre_order(root.rchild)
            
    pre_order(root)
    
    # A B D E C F
    # 中序遍历
    # 每次从左孩子返回  打印该节点  
    # 先递归左孩子,再输出自己,再递归右孩子. 意味着只有当每一个节点的左孩子全部打印,再打印自己,最后打印右孩子
    
    def mid_order(root): 
        if root:
            mid_order(root.lchild)
            print(root.data,end=" ")
            mid_order(root.rchild)
            
    mid_order(root)
    # D B E A F C
    # 后序遍历
    # 先递归左子树,在递归右子树,最后输出节点自己.  (左子树,右子树,节点)
    
    def post_order(root):
        if root:
            post_order(root.lchild)
            post_order(root.rchild)
            print(root.data,end=" ")
    post_order(root)
    
    # D E B F C A
  • 相关阅读:
    第二章IntelliJ IDEA 安装目录的核心文件讲解
    第一章首次运行 IntelliJ IDEA 示例
    struts json ajax整理
    关于struts2文件下载
    mybatis深入资料
    MyBatis获取插入记录的自增长字段值
    好久没有更新博客了,今天更新了几篇
    枚举Enum 的常用方法
    angular js中ng-model时间格式化
    input框输入完回车即可查询事件
  • 原文地址:https://www.cnblogs.com/kenD/p/11088967.html
Copyright © 2011-2022 走看看