本篇的主要内容:
- Python实现二叉树的建立与遍历
- 如何判断完全二叉树
最近遇到这个问题,要使用Python实现二叉树的一些操作,在网上这部分的资源不是很多,也没有找好很好的,只好按照自己的思路简单写了一下,本来算法是不局限于语言的,说是这么说,但是还是遇到了一些问题,在此梳理记录一下。
二叉树建立
首先定义二叉树的先序字符串,并使用#
表示某个节点的子树为空的情况:
二叉树类的定义为:
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
创建二叉树:
pos = 0
def create(seq):
global pos
ch = seq[pos]
pos += 1
if ch == '#':
return None
else:
temp = TreeNode(ch)
temp.left = create(seq)
temp.right = create(seq)
return temp
seq = "abd###ce###"
root = create(seq)
这里创建的二叉树形状为:
a
/ \
b c
/ /