数据结构之二叉树

常用的数据结构及特征

一、二叉树基本形态及性质

二叉树基本形态及性质
二叉树定义及性质及特殊二叉树
数据结构和算法之二叉树
一文搞懂面试中的二叉树

代码实现

  • 二叉树包括深度遍历和广度遍历
  • 深度遍历有三种形式:先序遍历(根,左,右)、中序遍历(左,根,右)、后序遍历(左,右,根)

深度遍历的实现

class TreeNode:
	def __init__(self,value = None,left = None,right = None):
		self.value = value
		self.left = left # 左子树
		self.right = right # 右子树
  • 实例化一个TreeNode
node1 = TreeNode("A",
                 TreeNode("B",
                          TreeNode("D"),
                          TreeNode("E")
                          ),
                 TreeNode("C",
                          TreeNode("F"),
                          TreeNode("G")
                          )
                 )
  • 前序遍历
def preTraverse(root):
    if root is None:
        return
    print(root.value)
    preTraverse(root.left)
    preTraverse(root.right)
  • 中序遍历
def midTraverse(root):
    if root is None:
        return
    midTraverse(root.left)
    print(root.value)
    midTraverse(root.right)
  • 后序遍历
def afterTraverse(root):
    if root is None:
        return
    afterTraverse(root.left)
    afterTraverse(root.right)
    print(root.value)
  • 广度优先遍历即是层次遍历,按一层一层地遍历。
def levelOrder(root):
    # write your code here
    res = []
    if root is None:    # 如果根节点为空,则返回空列表
        return res
    # 模拟一个队列储存节点
    q = []
    q.append(root)    # 首先将根节点入队
    # 列表为空时,循环终止
    while len(q) != 0:
        length = len(q)
        for i in range(length):
            r = q.pop(0)   # 将同层节点依次出队
            if r.left is not None:
                q.append(r.left)   # 非空左孩子入队
            if r.right is not None:
                q.append(r.right)   # 非空右孩子入队
            res.append(r.value)
            print(r.value)
    return res
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值