zoukankan      html  css  js  c++  java
  • 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 ~ % 

  • 相关阅读:
    关于oralce字符集问题(复制别人的,纯属自己学习)
    Linux下oracle11gR2系统安装到数据库建立配置及最后oracle的dmp文件导入一站式操作记录
    Linux下部署ASP.NET服务连接oracle遇到的问题记录
    前端金钱分转元,元转分精度问题解决
    vue-element的form表单显示图片
    vue页面刷新技巧--(v-if指令)以及vue动态设置css属性
    vue后端获取的数据无法进行双向数据绑定
    Vue实现勾选框全选和局部选择功能
    VUE/jQuery生成二维码扫描跳转地址
    uni-app之数据状态改动后页面不刷新踩坑
  • 原文地址:https://www.cnblogs.com/sea-stream/p/13773450.html
Copyright © 2011-2022 走看看