#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/3/18 12:31
# @Author  : baoshan
# @Site    : 
# @File    : binarytree.py
# @Software: PyCharm Community Edition

# python 实现二叉树的左中右序遍历


class Node(object):
    def __init__(self, index):
        self.index = index
        self.left_child = None
        self.right_child = None


class BinaryTree(Node):
    def __init__(self, root):
        self.root = root

    def pre_travel(self, node):
        if not node:
            return
        print(node.index)
        self.pre_travel(node.left_child)
        self.pre_travel(node.right_child)

    def mid_travel(self, node):
        if not node:
            return
        self.mid_travel(node.left_child)
        print(node.index)
        self.mid_travel(node.right_child)

    def suf_travel(self, node):
        if not node:
            return
        self.suf_travel(node.left_child)
        self.suf_travel(node.right_child)
        print(node.index)


node_dict = {}
for i in range(1, 10):
    node_dict[i] = Node(i)

node_dict[1].left_child = node_dict[2]
node_dict[1].right_child = node_dict[3]
node_dict[2].left_child = node_dict[5]
node_dict[2].right_child = node_dict[6]
node_dict[3].left_child = node_dict[7]
node_dict[7].left_child = node_dict[8]
node_dict[7].right_child = node_dict[9]

tree = BinaryTree(node_dict[1])
print('---左序遍历---')
tree.pre_travel(tree.root)
print('---中序遍历---')
tree.mid_travel(tree.root)
print('---右序遍历---')
tree.suf_travel(tree.root)

更多相关文章

  1. Python文件遍历的三种方法
  2. python_列表_循环遍历
  3. java中循环遍历删除List和Set集合中元素的方法
  4. [疯狂Java]NIO.2:walkFileTree、FileVisitor(遍历文件/目录)

随机推荐

  1. Android(安卓)Studio ADB 环境变量配置
  2. Android Add-ons
  3. Android IO存储总结
  4. Android程序开发初级教程(一) 开始 Hello
  5. Android开发学习系列-----开发环境准备
  6. 如何启动Android SDK 1.5模拟器
  7. 初涉Android之文件保存
  8. 分享偶的android秘籍
  9. Android(安卓)自定义EditText, 增加设置
  10. 真实可行的android 基站定位代码