专栏首页程序生活python实现二叉树的创建和遍历

python实现二叉树的创建和遍历

#coding:utf-8
#author:Elvis
 
class TreeNode(object):
    def __init__(self):
        self.data = '#'
        self.l_child = None
        self.r_child = None
 
class Tree(TreeNode):
    #create a tree
    def create_tree(self, tree):
        data = raw_input('->')
        if data == '#':
            tree = None
        else:
            tree.data = data
            tree.l_child = TreeNode()
            self.create_tree(tree.l_child)
            tree.r_child = TreeNode()
            self.create_tree(tree.r_child)
 
    #visit a tree node
    def visit(self, tree):
        #输入#号代表空树
        if tree.data is not '#':
            print str(tree.data) + '\t',
    #先序遍历
    def pre_order(self, tree):
        if tree is not None:
            self.visit(tree)
            self.pre_order(tree.l_child)
            self.pre_order(tree.r_child)
 
    #中序遍历
    def in_order(self, tree):
        if tree is not None:
            self.in_order(tree.l_child)
            self.visit(tree)
            self.in_order(tree.r_child)
 
    #后序遍历
    def post_order(self, tree):
        if tree is not None:
            self.post_order(tree.l_child)
            self.post_order(tree.r_child)
            self.visit(tree)
 
t = TreeNode()
tree = Tree()
tree.create_tree(t)
tree.pre_order(t)
print '\n'
tree.in_order(t)
print '\n'
tree.post_order(t)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据结构-栈的定义及python实现

    class Node(object): def __init__(self,value): self.value=value ...

    致Great
  • 数据结构-顺序表的定义及python实现

    1 顺序表的定义 线性表 是具有相同数据类型的n个数据元素的有限序列。 顺序表 使用组地址连续的存储单元、依次存储线性表中的数据元素,从而使得逻辑上相邻的两...

    致Great
  • Leetcode-Medium 6. ZigZag Conversion

    字符串“PAYPALISHIRING”以Z字形图案写在给定数量的行上,如下所示:(您可能希望以固定字体显示此图案以获得更好的易读性):

    致Great
  • centos中tree插件的使用与注意事项

    1 tree的安装 yum -y install tree 使用时直接输入tree 目录名,即可显示该目录的树形结构,示例如下: ? 这样查看目录结构一目了然,...

    闵开慧
  • tree

    编程的时候,经常需要描述文件夹结构。如果对应的操作系统是centos的话,截图也很难说明问题。所以,我找到了这个tree命令,很好用。一个tree命令,就可以列...

    胡齐
  • 终端显示树状文件结构

    BY
  • linux下的小工具

    咪啪咪啪
  • BFE.dev前端刷题#58. 获取DOM tree高度

    一个tree的高度 = 子tree的最大高度 + 1。由此我们可以很容易地得到递归解法。

    JSer
  • 洛谷P3377 【模板】左偏树(可并堆)

    题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y...

    attack
  • linux命令tree的使用

    有时候我们新建完项目,想查看一下项目的目录结构,此时我们就可以使用tree命令了,但是mac电脑没有自带tree命令,我们需要安装tree。

    挥刀北上

扫码关注云+社区

领取腾讯云代金券