常用数据结构之树的双亲_孩子_孩子兄弟表示法

本文介绍了树的三种表示方法:双亲表示法、孩子表示法和孩子兄弟表示法,并详细讲解了如何通过孩子兄弟表示法将普通树及森林转化为二叉树。还分享了个人对挑战常规、追求独特性的思考。
摘要由CSDN通过智能技术生成

1.树的双亲表示法

前面我们聊得都是二叉树,今天我们来讨论一下如何去表示一棵普通的树。常用的表示方法有三种:双亲表示法、孩子表示法和孩子兄弟表示法。我们首先来聊一下双亲表示法,顾名思义,双亲表示法就是在每一个节点中,存储其父节点的下标。这样就可以将树中各节点的结构关系表示出来,也可以快速的对父节点进行访问。
如下图所示我们将一棵普通的树,用图二中的列表形式进行存储。
在这里插入图片描述
在这里插入图片描述
具体的python实现代码,如下所示(个人手写,不喜勿怪):

#-*- coding:utf-8 -*-
class Node:
    def  __init__(self,val,parent):
        self.val = val
        self.parent = parent
class tree:
    def __init__(self):
        self._array = []
    def addNode(self,val,parent):
        node = Node(val,parent)
        self._array.append(node)
    def show(self):
        for i,v in enumerate(self._array):
            print('节点下标为 = {} 值为 = {} 父节点下标为{}'.format(i,v.val,v.parent))
    def findparent(self,node):
        return self._array[node.parent]
tree = tree()
tree.addNode('R',-1)
tree.addNode('A',0)
tree.addNode('B',0)
tree.addNode('C',0)
tree.addNode('D',1)
tree.addNode('E',1)
tree.addNode(
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值