首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在二叉树中搜索(可能是多个)节点,其中所有节点的前一个父节点都匹配条件?

在二叉树中搜索满足特定条件的节点,且这些节点的前一个父节点都匹配条件,可以通过深度优先搜索(DFS)算法来实现。

DFS是一种递归的搜索算法,它从根节点开始,沿着树的深度遍历节点,直到找到满足条件的节点或遍历完整棵树。在搜索过程中,需要记录每个节点的前一个父节点,以便判断是否匹配条件。

以下是一个示例的实现代码:

代码语言:txt
复制
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def search_nodes(root, condition):
    result = []
    dfs(root, None, condition, result)
    return result

def dfs(node, parent, condition, result):
    if node is None:
        return
    
    if parent is not None and condition(parent):
        result.append(node)
    
    dfs(node.left, node, condition, result)
    dfs(node.right, node, condition, result)

在上述代码中,TreeNode表示二叉树的节点,search_nodes函数用于搜索满足条件的节点。dfs函数是实际的深度优先搜索递归函数,其中node表示当前节点,parent表示前一个父节点,condition是判断节点是否满足条件的函数,result用于存储满足条件的节点。

使用示例:

代码语言:txt
复制
# 创建二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)

# 定义条件函数
def condition(node):
    return node.val % 2 == 0

# 搜索满足条件的节点
result = search_nodes(root, condition)

# 输出结果
for node in result:
    print(node.val)

以上代码中,我们创建了一个简单的二叉树,并定义了一个条件函数condition,用于判断节点的值是否为偶数。然后,我们调用search_nodes函数搜索满足条件的节点,并将结果打印输出。

关于二叉树的概念、分类、优势、应用场景以及腾讯云相关产品和产品介绍链接地址,可以参考以下内容:

  • 概念:二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。
  • 分类:二叉树可以分为满二叉树、完全二叉树、平衡二叉树等。
  • 优势:二叉树具有快速的搜索、插入和删除操作的特点,适用于表示有层次关系的数据。
  • 应用场景:二叉树常用于实现搜索、排序和索引等算法,也广泛应用于数据库、编译器、操作系统等领域。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供灵活可扩展的云服务器实例,适用于各种计算场景。产品介绍链接
  • 腾讯云云数据库 MySQL 版(CDB):提供高性能、可扩展的关系型数据库服务,适用于存储和管理结构化数据。产品介绍链接
  • 腾讯云对象存储(COS):提供安全可靠、高扩展性的云端存储服务,适用于存储和管理各种类型的数据。产品介绍链接
  • 腾讯云人工智能(AI):提供丰富的人工智能服务和解决方案,包括图像识别、语音识别、自然语言处理等。产品介绍链接
  • 腾讯云物联网(IoT):提供全面的物联网解决方案,包括设备接入、数据管理、应用开发等。产品介绍链接
  • 腾讯云移动开发(Mobile):提供一站式移动应用开发和运营服务,包括移动后端云、移动推送、移动分析等。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【肝帝一周总结:全网最全最细】☀️Mysql 索引数据结构详解与索引优化☀️《❤️记得收藏❤️》

通常被称之为 “左子树” 和 “右子树” 左子树 < 节点 <= 右子树 二叉树第 i 层至多有有 2^(i-1) 个节点, 深度为 K 二叉树至多总共有个 2^k-1 节点(定义根节点所在深度...2、每个中间节点包含 k-1 个元素和 k 个孩子,其中 m/2 <= k <= m。 3、每一个叶子节点包含 k-1 个元素,其中 m/2 <= k <= m。...一个 m 阶 B + 树具有如下几个特征: 1、有 k 个子树中间节点包含有 k 个元素(B 树是 k-1 个元素),每个元素不保存数据,只用来索引,所有数据保存在叶子节点。...其中三个字段就是联合索引。 由于联合索引出现,key 由多个列组成,列排序决定了可命中索引列数。也叫最左前缀匹配。...6、优化建议 1、最左前缀匹配 索引可以简单如一个列 (a),也可以复杂多个列 (a, b, c, d),即联合索引。

81010

【愚公系列】软考中级-软件设计师 014-数据结构(考点简介)

欢迎 点赞✍评论⭐收藏前言数据结构是一种组织和存储数据方式,它涉及如何在计算机存储和访问数据方法和技术。数据结构可以用来解决不同类型问题,包括搜索、排序、插入和删除等操作。...3.树树是一种非线性数据结构,它由节点和边组成。树节点可以有 0 个或多个节点,每个节点都有一个节点,除了根节点没有节点。根节点是整个树顶部节点,它没有节点。...树常见术语有:节点:树元素,包含数据和指向子节点指针。根节点:树顶部节点,没有节点。叶节点:没有子节点节点。子树:由一个节点和它所有节点组成树。...祖先节点:沿着树路径由根节点到该节点所有节点。子孙节点:从一个节点到树末端节点路径上所有节点节点度:一个节点拥有的子节点数量。树度:所有节点最大度数。...图应用非常广泛,可以应用于各种领域,计算机网络、社交网络、地理信息系统等。5.查找查找是数据结构中常用操作之一,用来在一个数据集合寻找特定元素或者满足特定条件元素。

30131
  • 数据结构层次化组织 -- 树总览

    以下是树主要概念和属性:树主要概念和属性节点(Node): 节点是树基本单元,它包含数据元素和一个多个指向其他节点引用。树每个元素表示为一个节点。...根节点(Root Node): 树顶部节点被称为根节点。它是整棵树起点,所有其他节点都从根节点开始。分支节点(Internal Node): 除了叶子节点以外节点称为分支节点。...分支节点至少有一个节点。叶子节点(Leaf Node): 叶子节点是树没有子节点节点,它们位于树末梢。节点(Parent Node): 有子节点节点被称为节点节点可以有多个节点。...子节点(Child Node): 子节点是直接连接到节点节点一个节点可以有多个节点。层级(Level): 树每一层是一个层级。根节点位于第一层,子节点层级依次递增。...二叉搜索树(Binary Search Tree)是一种特殊类型二叉树其中左子树值小于或等于根节点值,右子树值大于根节点值。

    64550

    面试二叉树看这 11 个就够了~

    全部代码是用 JS 书写,经过 Leetcode 标准测试(小部分Leetcode 没有的题目),对所有的算法题特点进行总结分类,手写算法,如何考虑到全部边界条件;如果快速多种思路解决,如何将思路快速转化为代码...输入一棵二叉树一个整数,打印出二叉树节点和为输出整数所有路径。...K 大节点 给定一棵二叉搜索树,请找出其中第 K 大节点。...只有左子节点二叉树,只有右子节点、只有一个结点二叉树 —— 特殊二叉树测试。 ? 空树、前序和序不匹配 —— 输入测试。 3、 代码实现 ?...重建二叉树 根据序遍历,找到二叉树节点和左右子树规律,然后递归构建二叉树。 ? 二叉树下一节点 根据序遍历,找出包含任何节点一下节点所有可能情况,然后根据情况分别进行判断。 ?

    65810

    图解:数据结构6种「树」,大鹏问你心中有数吗?

    ❝什么是节点? ❞ 树父子关系和现实很相似,若一个节点含有子节点,则这个节点称为其子节点节点。 ❝什么是叶子节点?...树特点 树形数据结构,具有以下结构特点: 每个节点只有有限个子节点或无子节点; 没有节点节点称为根节点; 每一个非根节点有且只有一个节点; 除了根节点外,每个子节点可以分为多个不相交子树;...三种遍历方式 二叉树遍历就是逐个访问二叉树节点数据,常见二叉树遍历方式有三种,分别是后序遍历,初学者分不清这几个顺序差别。 「有个简单记忆方式,这里后」都是对于根节点而言」。...查找二叉树理解了也不难,简单来说就是二叉树所有节点,左子树上节点小于根节点,右子树上所有节点大于根节点。 ?...应用 Trie树还用于搜索引擎关键词提示功能。比如当你在搜索输入检索单词开头几个字,搜索引擎就可以自动联想匹配到可能词组出来,这正是Trie树最直接应用。 ?

    1.3K51

    高级数据结构讲解与案例分析

    换句话说,优先队列本质是一个数组,数组里每个元素既有可能是其他元素节点,也有可能是其他元素节点,而且,每个节点只能有两个子节点,很像一棵二叉树结构。...除了根节点,其他所有节点都有可能是单词结尾,叶子节点一定都是单词结尾。 实现 前缀树最基本操作就是两个:创建和搜索。 1....搜索 与创建方法类似,从前缀树节点出发,逐个匹配输入前缀字符,如果遇到了就继续往下一层搜索,如果没遇到,就立即返回。...由于字符矩阵每个点都能作为一个字符串开头,所以必须得尝试从矩阵所有字符出发,上下左右一步步地走,然后去和字典进行匹配,如果发现那些经过字符能组成字典里单词,就把它记录下来。...树状数组一个元素是空节点。 如果节点 tree[y] 是 tree[x] 节点,那么需要满足条件:y = x - (x & (-x))。

    80620

    MySQL:索引知识点盘点

    B+ 树相较于 B- 树最主要特点是: 数据只出现在叶子节点 所有叶子节点增加了一个链指针 在 B+ Tree所有数据记录节点都是按照键值大小顺序存放在同一层叶子节点上,而非叶子节点上只存储 key...2、其他类型索引特点及其缺点 二叉树索引:左子节点小于节点,右子节点大等于节点;索引会受插入顺序影响,增加复杂度,比如插入是已排序数据时,导致二叉树变成了链表;,查找复杂度为 N; 红黑树索引:...4、联合索引 联合索引:MySQL可以使用多个字段同时建立一个索引,叫做联合索引; 最左前缀匹配原则:在 MySQL 建立联合索引时会遵守最左前缀匹配原则,即最左优先,在检索数据时从联合索引最左边开始匹配...---- 四、相关知识点 1、索引失效 常见索引失效情况: 列于列对比:例如:某个表,有两列 id 和 c_id 建了单独索引,Where 条件后为 id=c_id,这种情况会被认为还不如走全表扫描...; 存在 Null 值条件:如果索引列是可空,是不会给其建索引; 存在 Not 条件:当查询条件为非时,索引定位就困难了,执行计划此时可能更倾向于全表扫描; Like 通配符:匹配情况下,执行计划会更倾向于选择全表扫描

    1.1K20

    前端leetcde算法面试套路之树

    二叉树遍历递归遍历递归时候后序都能直接处理完了递归是后序遍历最简单也是最容易出理解方法,不懂画个图就好了迭代遍历 -- 双色标记法使用颜色标记节点状态,新节点为白色,已经访问节点为灰色...n 有所区别而言 -- 换句话说,对于每一个节点,都要进行一次构建满二叉树,知道边界为止每一层都是遍历分配左右树节点数,然后使用后续遍历方式遍历到边界条件处,然后开始进行处理;只有当左右节点存在节点时候...二叉树垂序遍历分析这道题主要还是看图做题,上面标记了一些垂序坐标,所以就考虑遍历一次,给节点标注上垂序位置属性,然后将相同垂序位置放在同一个数组即可;值得注意是,在二叉树相互交替子树,同一层中会出现多个垂序位置一样值...,反序列化出一课树使用是 BFS 平铺方式,每次取走 nodes 两个节点,如果有值,则保存到队列,保证循环结束所有有值节点和对应左右节点串联好。...返回给节点,让节点进行判断, l(e) -> root所以整体来说就是一个递归过程,但是在递归过程又存在局部最优解需要保存;每一次递归最大值是包含根节点最大值,这样可以保证衔接上左右子树最大值

    33530

    前端leetcde算法-树

    二叉树遍历递归遍历递归时候后序都能直接处理完了递归是后序遍历最简单也是最容易出理解方法,不懂画个图就好了迭代遍历 -- 双色标记法使用颜色标记节点状态,新节点为白色,已经访问节点为灰色...n 有所区别而言 -- 换句话说,对于每一个节点,都要进行一次构建满二叉树,知道边界为止每一层都是遍历分配左右树节点数,然后使用后续遍历方式遍历到边界条件处,然后开始进行处理;只有当左右节点存在节点时候...二叉树垂序遍历分析这道题主要还是看图做题,上面标记了一些垂序坐标,所以就考虑遍历一次,给节点标注上垂序位置属性,然后将相同垂序位置放在同一个数组即可;值得注意是,在二叉树相互交替子树,同一层中会出现多个垂序位置一样值...,反序列化出一课树使用是 BFS 平铺方式,每次取走 nodes 两个节点,如果有值,则保存到队列,保证循环结束所有有值节点和对应左右节点串联好。...返回给节点,让节点进行判断, l(e) -> root所以整体来说就是一个递归过程,但是在递归过程又存在局部最优解需要保存;每一次递归最大值是包含根节点最大值,这样可以保证衔接上左右子树最大值

    37030

    前端leetcde算法之讲解--树

    二叉树遍历递归遍历递归时候后序都能直接处理完了递归是后序遍历最简单也是最容易出理解方法,不懂画个图就好了迭代遍历 -- 双色标记法使用颜色标记节点状态,新节点为白色,已经访问节点为灰色...n 有所区别而言 -- 换句话说,对于每一个节点,都要进行一次构建满二叉树,知道边界为止每一层都是遍历分配左右树节点数,然后使用后续遍历方式遍历到边界条件处,然后开始进行处理;只有当左右节点存在节点时候...二叉树垂序遍历分析这道题主要还是看图做题,上面标记了一些垂序坐标,所以就考虑遍历一次,给节点标注上垂序位置属性,然后将相同垂序位置放在同一个数组即可;值得注意是,在二叉树相互交替子树,同一层中会出现多个垂序位置一样值...,反序列化出一课树使用是 BFS 平铺方式,每次取走 nodes 两个节点,如果有值,则保存到队列,保证循环结束所有有值节点和对应左右节点串联好。...返回给节点,让节点进行判断, l(e) -> root所以整体来说就是一个递归过程,但是在递归过程又存在局部最优解需要保存;每一次递归最大值是包含根节点最大值,这样可以保证衔接上左右子树最大值

    45320

    前端leetcde算法面试套路之树_2023-02-28

    二叉树遍历 递归遍历 递归时候后序都能直接处理完了 递归是后序遍历最简单也是最容易出理解方法,不懂画个图就好了 迭代遍历 -- 双色标记法 使用颜色标记节点状态,新节点为白色,已经访问节点为灰色...后继者 分析 根据序遍历,将所有节点保存到数组,然后找到 P 时候,保存下一个下标,然后遍历结束后,从数组取即可 时间和空间复杂度都是 O(N) var inorderSuccessor...n 有所区别而言 -- 换句话说,对于每一个节点,都要进行一次构建满二叉树,知道边界为止 每一层都是遍历分配左右树节点数,然后使用后续遍历方式遍历到边界条件处,然后开始进行处理; 只有当左右节点存在节点时候...给定一个数组,反序列化出一课树 使用是 BFS 平铺方式,每次取走 nodes 两个节点,如果有值,则保存到队列,保证循环结束所有有值节点和对应左右节点串联好。...,返回给节点,让节点进行判断, l(e) -> root 所以整体来说就是一个递归过程,但是在递归过程又存在局部最优解需要保存; 每一次递归最大值是包含根节点最大值,这样可以保证衔接上左右子树最大值

    23330

    JS算法之二叉树、二叉搜索

    ----二叉树和二叉搜索树「二叉树节点「最多」只能有两个子节点一个是左侧子节点,另一个是右侧子节点且,二叉树是一种典型「具有递归性质数据结构」。...「二叉搜索树」(BST)是特殊二叉树只允许你在左侧节点存储(比节点)小值在右侧节点存储(比节点)大二叉树数据结构用Node 类来表示二叉树每个节点,代码如下。...为了在一个节点被遍历之后能够接着回去「遍历它节点」 可以在顺着指向左子节点指针遍历二叉树时,把遇到每个节点添加到一个一个节点被遍历之后,就可以从栈得到它节点function inOrderTraverse...「迭代代码」也很类似它们需要一个栈 stack = new Stack()基本结构也很相像 都有两个while循环并且它们条件一样第一个while while(cur || !...而这个有一个比较关键术语叫 --- 「前缀和」(我们后期会单独写一篇关于此类问题文章)----二叉搜索树(BST)「二叉搜索树」(BST)是特殊二叉树,但是只允许你在左侧节点存储(比节点)小

    62551

    Java面试考点4之数据结构

    内容,树一般用作查找与排序辅助结构,剩下两个部分和树有关,一个二叉树一个是多叉树。...详解二叉搜索树 二叉搜索树 如下图所示,二叉搜索树满足这样条件,每个节点包含一个值,每个节点至多有两个子树。每个节点左子树节点小于自身值,每个节点右子树节点大于自身值。...二叉树查询时间复杂度是 log(N),但是随着不断插入、删除节点二叉树树高可能会不断变大,当一个二叉搜索所有节点只有左子树或者只有右子树时,其查找性能就退化成线性了。...3棵子树,那么其中必定包含 2 个关键字; 非叶子节点关键字大小有序,如上图中左边节点中 37、51 两个元素就是有序节点中每个关键字左子树关键字小于该关键字,右子树关键字大于该关键字...节点关键字与子树数目相同,比如节点中有 3 个关键字,那么就有 3 棵子树; 关键字对应子树节点大于或等于关键字,子树包括关键字自身; 所有关键字都出现在叶子节点中;

    43220

    数据库之索引模块

    ---- B树 由于二叉树每次只能读取两个节点对磁盘IO没有优化,并且只有左右两个查找路径,树深度就会随着日益增加数据量而递增,所以这时候就需要寻找一个每个层级可以有多个节点多路树形结构,而B树就符合该需求...它或者是空树,或者是满足下列性质树: 根节点至少有两个子节点每个节点最多含有m个子节点(m >= 2) 除根节点和叶子节点外,其他每个节点至少有ceil(m/2)个子节点 所有的叶子节点位于同一层...其定义基本与B树相同,除了: 非叶子节点子树指针与关键字个数相同 非叶子节点子树指针 P[i],指向关键字值[K[i], K[i + 1])子树 非叶子节点仅用来做索引,数据保存在叶子节点所有叶子节点均有一个链指针指向下一个叶子节点...---- 密集索引和稀疏索引区别 密集索引和稀疏索引区别: 密集索引文件每个搜索码值都对应一个索引值 稀疏索引文件只为索引码某些值建立索引项 密集索引和稀疏索引主要区别就是前者叶子节点保存完整数据...并且InnoDB索引与数据是存储在同一个文件一个主键被定义,该主键则作为密集索引 若没有主键被定义,该表一个唯一非空索引则作为密集索引 若不满足以上条件,InnoDB内部会生成一个隐藏主键作为密集索引

    44210

    红黑树简介及左旋、右旋、变色

    要保持二叉搜索平衡,就要在每增加一个节点或每减少一个节点保持平衡,即让二叉搜索树一直保持平衡,这样二叉搜索性能就不可能向链表退化。...(实际红黑树是一个节点一个节点插入,如下构造过程只是为了先理解红黑树5条特性) 1. 先加上叶子节点,并把所有节点标记为黑色。 ? 2....这棵二叉树显然不满足红黑树特性5,节点10到左子树叶子节点路径上有一个节点,到右子树叶子节点路径上有两个黑节点,所以要将一些黑节点变成红节点。...再看另一个左旋例子,左边是左旋局部结构,以节点10作为旋转节点,左旋后,旋转节点右子节点20成为旋转节点10节点,右子节点左子节点(这里是一个叶子节点NIL)从右子节点上“断开”,成为旋转节点...同样再看一个右旋例子,左边是右旋局部结构,以节点30作为旋转节点,右旋后,旋转节点左子节点20成为旋转节点30节点,左子节点右子节点(这里是一个叶子节点NIL)从左子节点上“断开”,成为旋转节点

    2.1K50

    传统编程遇上机器学习会擦出怎样火花?

    因为它给了我们θ(log(N),即所有标题大小乘以搜索和插入复杂度。同样,二叉树没有帮助,因为它们找不到前缀匹配而是精准匹配。 幸运是,现有的数据结构已经准备好用于查找前缀匹配。...尝试 在本节,我们将探讨试图如何在标题(单词)列表搜索前缀匹配。一旦你理解了单词插入方式,就相当容易理解: ? 接下来让我们看看如何搜索以“te”开头标题: ? 你可能在想,没有那么快!...事实上,复杂度是θ(k + M),其中k是前缀长度,M是建议列表或最后一个节点匹配子树大小(直接子节点保存在HashTable,因此需要经常查找字符匹配)。...那么,我们可以稍微增加节点来存储更多信息,而不仅仅是字符,如下所示: ? 由于该节点已经具有子树包含单词列表,所以该修改可以极大地帮助避免在最后一个匹配节点所有子树。...因此,如果用户搜索其中一个词开头标题,很可能会搜索不出来。 解决方案很简单!我们只是将每个单词分别插入到树,并将标题所有句子保存到节点建议列表。现在,不再只提供单词建议,而是有一个句子列表。

    93750

    疯狂java笔记之树和二叉树

    对于这个有限节点集合而言,它满足如下条件: 当N=0时,改节点集合为空,这课树也被称为空树 在任意非空树,有且仅有一个根(root)节点 当N>1时,除根节点以外其余节点可分为M个互为相交有限集合...树任一节点可以有0或多个节点,但只能有一个节点。根节点一个特例,根节点没有节点,叶子节点没有子节点。...子节点链表示法:每个非叶子节点通过一个链表来记录它所有的子节点节点表示法 通过前面的介绍可以发现,树除根节点之外每个节点都有一个节点。...,wn}构造n棵二叉树集合F={T1,T2,...,Tn} },F集合每棵二叉树只有一个节点。...性质5也仍然保持满足,因为通过这三个节点中任何一个所有路径以前通过节点G,现在它们通过以前节点P。在各自情形下,这都是三个节点中唯一黑色节点。 ?

    1.2K20

    python二叉树

    下面的数据结构是一个树:   树有多个节点(node),用以储存元素。某些节点之间存在一定关系,用连线表示,连线称为边(edge)。边上端节点称为节点,下端称为子节点。...树像是一个不断分叉树根。   每个节点可以有多个节点(children),而该节点是相应子节点节点(parent)。...如果我们给二叉树一个额外条件,就可以得到一种被称作二叉搜索树(binary search tree)特殊二叉树。...n个节点二叉搜索深度最多为n,最少为log(n)。  5. 二叉树遍历    遍历即将树所有结点访问且仅访问一次。按照根节点位置不同分为前序遍历,序遍历,后序遍历。  ...首先对满二叉树按照广度优先遍历(从左到右)顺序进行编号。   一颗深度为k二叉树,有n个节点,然后,也对这棵树进行编号,如果所有的编号和满二叉树对应,那么这棵树是完全二叉树

    46400

    从 0 开始学习 JavaScript 数据结构与算法(十一)树

    二叉树 如果树一个节点最多只能由两个子节点,这样树就称为二叉树二叉树组成 二叉树可以为空,也就是没有节点; 若二叉树不为空,则它由根节点和称为其左子树 TL 和右子树 TR 两个不相交二叉树组成...如果不为空,则满足以下性质: 条件 1:非空左子树所有键值小于其根节点键值。...比如三节点 6 所有非空左子树键值小于 6; 条件 2:非空右子树所有键值大于其根节点键值;比如三节点 6 所有非空右子树键值大于 6; 条件 3:左、右子树本身也都是二叉搜索树;...image 如上图所示,树二和树三符合 3 个条件属于二叉树,树一不满足条件 3 所以不是二叉树。 总结:二叉搜索特点主要是较小值总是保存在左节点上,相对较大值总是保存在右节点上。...这种特点使得二叉搜索查询效率非常高,这也就是二叉搜索搜索来源。 二叉搜索树应用举例 下面是一个二叉搜索树: ?

    47410

    非线性表树、堆是干嘛用 ?其数据结构是怎样

    树 树 树数据结构就像我们生活真实树,只不过是倒过来形状。 术语定义 节点:树每个元素称为节点 A、B、C、D、E、F、G、H、I、J。 节点:指向子节点节点 A。...子节点:被节点指向节点 A 孩子 B、C、D。 父子关系:相邻两节点连线,称为父子关系, A 与 B,C 与 H,D 与 J。 根节点:没有节点节点 A。...红黑树 存储 完全二叉树存储 链式存储 每个节点由 3 个字段,其中一个存储数据,另外两个是指向左右子节点指针。我们只要拎住根节点,就可以通过左右子节点指针,把整棵树串起来。...其中、后序,表示节点与它左右子树节点遍历访问先后顺序。 前序遍历(根 => 左 => 右) 对于树任意节点来说,先访问这个节点,然后再访问它左子树,最后访问它右子树。...后序遍历(左 => 右 => 根) 对于树任意节点来说,先访问它左子树,然后再访问它右子树,最后访问它本身。 实际上,二叉树、后序遍历就是一个递归过程。

    81030
    领券