python N叉树

  用python实现树这种数据结构,可用于实现二叉树或N叉树。

一、定义数据结构

class Node():
    # 初始化一个节点
    def __init__(self,val = None):
        self.val = val       # 节点值
        self.l_child = []    # 子节点列表
    # 添加子节点
    def add_child(self,node):
        self.l_child.append(node)

二、初始化数据

  示例数据如图所示
在这里插入图片描述

root = Node('A')
B = Node('B')
root.add_child(B)
root.add_child(Node('C'))
D = Node('D')
root.add_child(D)
B.add_child(Node('E'))
B.add_child(Node('F'))
B.add_child(Node('G'))
D.add_child(Node('H'))
D.add_child(Node('I'))

三、遍历方法

二叉树:
  前序遍历
  后序遍历
  层次遍历
  中序遍历
N叉树:
  前序遍历 ABEFGCDHI
  后序遍历 EFGBCHIDA
  层次遍历
其中,每种遍历方式都有两种实现方式(递归和非递归)

3.1前序遍历

res = ''

def pre(tn):
    global res
    if not tn:
        return
    res += tn.val
    for i in tn.l_child:
        pre(i)
    return(res)

pre(root)
print(res)

3.2后序遍历

res = ''

def post(tn):
    global res
    if not tn:
        return
    for i in tn.l_child:
        post(i)
    res += tn.val
    return(res)

post(root)
print(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值