#定义二叉树节点
class BinTreeNode(object):
def __init__(self, data=None, left=None, right=None):
self.data, self.left, self.right = data, left, right
class BinTree(object):
def __init__(self, root):
self.root = root
@classmethod
def build_from(cls, node_list):
"""通过节点信息构造二叉树
第一次遍历:构造node节点
第二次遍历:给root和孩子赋值
最后用root初始化这个类并返回一个对象
"""
node_dict = {
}
for node_data in node_list:
data = node_data['data']
node_dict[data] = BinTreeNode(data)
for node_data in node_list:
data = node_data['data']
node = node_dict[data]
if node_data['is_root']:
root = node
node.left = node_dict.get(node_data['left']
node.right = node_dict.get(node_data['right']
return cls(root)
###二叉树的遍历
#先序遍历:先根,然后左子树、右子树
def preorder_trav(self, subtree):
if subtree is not None:
print(subtree.data)
self.preorder_trav(subtree.left)
self.preorder_trav
二叉树
最新推荐文章于 2022-07-09 13:48:50 发布