基于二叉堆的二叉树绘制方法
注:本文所述方法中的二叉树以链表的形式存储。
1 绘图前准备。
首先你的二叉树要以链表的形式存储,你的节点类中方法的命名要如下所示:
class BinaryTree:
def __init__(self,value):
self.value=value
self.left=None
self.right=None
self.indexInHeap=None
def getIndexHeap(self):
return self.indexInHeap
def setIndexHeap(self,value):
self.indexInHeap=value
def insertLeft(self,newNode):
if self.left==None:
self.left=BinaryTree(newNode)
else:
t=BinaryTree(newNode)
t.left=self.left
self.left=t
def insertRight(self,newNode):
if self.right==None:
self.right=BinaryTree(newNode)
else:
t=BinaryTree(newNode)
t.right=self.right
self.right=t
def getValue(self):
return self.value
def setValue(self,value):
self.value=value
def getRightChild(self):
return self.right
def getLeftChild(self):
return self.left
2、绘图的基本思想
首先通过二叉树的高度,得出最底层满二叉树的叶子节点树,随后将该树满二叉树的叶节点求出,然后层层向上递推,求出所有节点的坐标,然后存为二叉堆数组。同时将你的二叉树存为二叉堆数组,二者一一对应,通过mathplo的annotate进行绘制。
注:有人回复的时候我再介绍详细的思想;
所有涉及的函数以及简单示例如下:
import matplotlib.pyplot as plt
<