数据结构之深度优先搜索python
1.#!/usr/bin/env python
-- coding: utf-8 --
@Time : 2018/8/14 9:12
@Author : 马贝贝
@Software: PyCharm
@Project : final_project
@File : erchashu.py
@warning : read only but owner
创建二叉树(treenode为节点,先给一个初始节点,再定义左右节点)
class TreeNode(object):
def init(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Btree(object):
# 先序遍历
def prescan(self, prelist, node):
if node != None:
prelist.append(node.val)
self.prescan(prelist, node.left)
self.prescan(prelist, node.right)
return prelist
# 中序遍历
def midscan(self, midlist, node):
if node != None:
self.midscan(midlist, node.left)
midlist.append(node.val)
self.midscan(midlist, node.right)
return midlist
# 后序遍历
def lastscan(self, lastlist, node):
if node != None:
self.lastscan(lastlist, node.right)
self.lastscan(lastlist, node.left)
lastlist.append(node.val)
return lastlist
if __name__ == '__main__':
node = TreeNode(77)
node.left = TreeNode(67, left=TreeNode(57, left=TreeNode(36), right=TreeNode(60)), right=TreeNode(70, left=TreeNode(67)))
node.right = TreeNode(87, left=TreeNode(66), right=TreeNode(99))
bTree = Btree()
prelist = bTree.prescan([], node)
print(prelist)
midlist = bTree.midscan([], node)
print(midlist)
lastlist = bTree.lastscan([], node)
print(lastlist)