python3 二叉树添加以及删除节点
code
class node: def __init__(self, data): self.data = data self.layer=None self.left_child = None self.right_child = None self.parent_node=None def add_left_node(self,data): if self.left_child == None: tmp_node=node(data) tmp_node.layer=self.layer+1 tmp_node.parent_node=self self.left_child = tmp_node else: t = node(data) t.layer=self.layer+1 t.parent_node=self t.left_child = self.left_child.left_child t.right_child = self.left_child.right_child self.left_child = t def add_right_node(self,data): if self.right_child == None: tmp_node=node(data) tmp_node.layer=self.layer+1 tmp_node.parent_node=self self.right_child = tmp_node else: t = node(data) t.layer=self.layer+1 t.parent_node=self t.right_child = self.right_child.right_child t.right_child = self.right_child.right_child self.right_child = t def remove_left_node(self): if self.left_child == None: pass else: self.left_child=None def remove_right_node(self): if self.right_child == None: pass else: self.right_child=None class BinaryTree: def __init__(self, root_node): self.root_node = root_node self.root_node.layer=1 def set_root_node(self, tmp_node): tmp_node.left_child=self.root_node.left_child tmp_node.right_child=self.root_node.right_child tmp_node.layer=1 self.root_node = tmp_node def get_root_node(self): return self.root_node def show_tree(self): if(self.root_node): #to do pass #测试 root_node=node("a") BinaryTree=BinaryTree(root_node) BinaryTree.root_node.add_left_node("b") BinaryTree.root_node.add_right_node("c") print("{}({})".format(BinaryTree.root_node.data,BinaryTree.root_node.layer))#a print("{}({})".format(BinaryTree.root_node.left_child.data,BinaryTree.root_node.left_child.layer))#b print("{}({})".format(BinaryTree.root_node.right_child.data,BinaryTree.root_node.right_child.layer))#c BinaryTree.set_root_node(node("d")) print("{}({})".format(BinaryTree.root_node.data,BinaryTree.root_node.layer))#d print("{}({})".format(BinaryTree.root_node.left_child.data,BinaryTree.root_node.left_child.layer))#b print("{}({})".format(BinaryTree.root_node.right_child.data,BinaryTree.root_node.right_child.layer))#c BinaryTree.root_node.left_child.add_left_node("e") print("{}({})".format(BinaryTree.root_node.left_child.left_child.data,BinaryTree.root_node.left_child.left_child.layer))#e print("{}({})".format(BinaryTree.root_node.left_child.left_child.parent_node.data,BinaryTree.root_node.left_child.left_child.parent_node.layer))#b
outputs
macname@MacdeMBP ~ % python3 test.py a(1) b(2) c(2) d(1) b(2) c(2) e(3) b(2) macname@MacdeMBP ~ %