zoukankan      html  css  js  c++  java
  • 2019.9.28-二叉树的先序、中序、后序遍历(代码)

    # coding:utf-8

    class Node(object):
    """"""
    def __init__(self, item):
    self.elem = item
    self.lchild = None
    self.rchild = None

    class Tree(object):
    """二叉樹"""
    def __init__(self):
    self.root = None

    def add(self, item):
    node = Node(item)
    if self.root is None:
    self.root = node
    return
    queue = [self.root]
    while queue:
    cur_node = queue.pop(0)
    if cur_node.lchild is None:
    cur_node.lchild = node
    return
    else:
    queue.append(cur_node.lchild)
    if cur_node.rchild is None:
    cur_node.rchild = node
    return
    else:
    queue.append(cur_node.rchild)

    def breadth_travel(self):
    """廣度遍歷"""
    if self.root is None:
    return
    queue = [self.root]
    while queue:
    cur_node = queue.pop(0)
    print(cur_node.elem, end=" ")
    if cur_node.lchild is not None:
    queue.append(cur_node.lchild)
    if cur_node.rchild is not None:
    queue.append(cur_node.rchild)

    def preorder(self, node):
    """先序遍歷"""
    if node is None:
    return
    print(node.elem, end=" ")
    self.preorder(node.lchild)
    self.preorder(node.rchild)

    def inorder(self, node):
    """中序遍歷"""
    if node is None:
    return
    self.inorder(node.lchild)
    print(node.elem, end=" ")
    self.inorder(node.rchild)

    def postorder(self, node):
    """後序遍歷"""
    if node is None:
    return
    self.postorder(node.lchild)
    self.postorder(node.rchild)
    print(node.elem, end=" ")


    if __name__ == "__main__":
    tree = Tree()
    tree.add(0)
    tree.add(1)
    tree.add(2)
    tree.add(3)
    tree.add(4)
    tree.add(5)
    tree.add(6)
    tree.add(7)
    tree.add(8)
    tree.add(9)
    tree.breadth_travel()
    print(" ")
    tree.preorder(tree.root)
    print(" ")
    tree.inorder(tree.root)
    print(" ")
    tree.postorder(tree.root)
    print(" ")

     

     

     

     执行结果

  • 相关阅读:
    PostgreSql开启远程连接
    Cannot resolve scoped service from root provider
    运行项目报错MSB 401 "RazorTagHelper" 任务意外失败
    win10远程共享文件夹
    Typora 快捷方式给字体设置颜色
    markdown编辑器typora支持图床的功能
    【HTML】二、HTML标签
    【HTML】一、初识HTML
    sublime text3安装后html:5+Tab不能快速生成html头部信息的解决办法
    markdown语法
  • 原文地址:https://www.cnblogs.com/lishuide/p/11605059.html
Copyright © 2011-2022 走看看