以实现下图为例:
代码实现:
#BinaryTree--创建仅有根节点的二叉树
def BinaryTree(r):
return [r,[],[]]
#insertLeft--将新节点插入树中作为其直接左节点
def insertLeft(r,tree):
t=tree.pop(1)
if len(t)>=1:
#证明t中保留的不是叶节点,而是一个树
tree.insert(1,[r,t,[]])
else:
tree.insert(1,[r,[],[]])
return tree
#insertRigth--将新节点插入树中作为其直接右节点
def insertRigth(r,tree):
t=tree.pop(2)
if len(t)>=1:
#证明t中保留的不是叶节点,而是一个树
tree.insert(2,[r,[],t])
else:
tree.insert(2,[r,[],[]])
return tree
#get--取得根节点
def get(tree):
return tree[0]
#setRootVal--设置新的根节点
def setRootVal(tree,newval):
tree[0]=newval
#getLeft--返回左子树
def getLeft(tree):
return tree[1]
#getRight--返回右子树
def getRight(tree):
return tree[2]
# 先创建一个根节点
tree=BinaryTree(1)
# 把左右两条线设置好
insertLeft(4,tree)
insertLeft(2,tree)
insertRigth(8,tree)
insertRigth(6,tree)
insertRigth(3,tree)
# 当左线上节点出现右子树的时候,先一层一层的提出树结构来
l=getLeft(tree)
# 再向子树中插入新的右节点
insertRigth(5,l)
#右线上出现左子树的时候同上述
rr=getRight(tree)
rrr=getRight(rr)
#此时rrr是一个以6为根的子树,插入左节点,完成
insertLeft(7,rrr)
print(tree)
结果: