# coding:utf-8
'''
Created on 2017年8月20日
@author: lelon
'''
# 二叉树结构
class Node(object):
def __init__(self, data, left=None, right=None):
self.data = data
self.left = left
self.right = right
# 广度优先遍历
def lookup(root):
stack = [root]
while stack:
current = stack.pop(0)
print current.data
if current.left:
stack.append(current.left)
if current.right:
stack.append(current.right)
# 深度优先遍历,先根遍历
def deep_first(root):
if not root:
return
print root.data
deep_first(root.left)
deep_first(root.right)
# 深度优先遍历,中根遍历
def deep_middle(root):
if not root:
return
deep_middle(root.left)
print root.data
deep_middle(root.right)
# 深度优先遍历,后根遍历
def deep_last(root):
if not root:
return
deep_last(root.left)
deep_last(root.right)
print root.data
# 求最大树身
def maxDeep(root):
if not root:
return 0
return max(maxDeep(root.left), maxDeep(root.right)) + 1
# 求两颗数是否相同
def is_same_tree(p, q):
if p is None and q is None:
return True
elif p and q:
return p.val == q.val and is_same_tree(p.left, q.left) and is_same_tree(p.right, q.right)
else:
return False
if __name__ == "__main__":
tree = Node(1, Node(3, Node(7, Node(0)), Node(6)), Node(2, Node(5), Node(4)))
lookup(tree)
print "**************************"
deep_first(tree)
print "**************************"
deep_middle(tree)
print "**************************"
deep_last(tree)
python 二叉树的相关实现
最新推荐文章于 2025-03-08 21:36:00 发布