- 2025-01-22二叉树的遍历(深度遍历)
二叉树的遍历分为广度遍历和深度遍历。这里我们讲解一下深度遍历的代码如何书写。首先要明确深度遍历有三种遍历次序,分别是:前序遍历(中左右),中序遍历(左中右),后序遍历(左右中)。如何区别这几种遍历方式呢?关键在于单层递归时处理逻辑的位置,比如说先写处理逻辑,再写左递归和右递归
- 2025-01-22二叉树的层次遍历(广度优先)
所谓层次遍历,就是按层次从左往右遍历二叉树。但是一个节点的左子树和右子树之间是没有直接联系方式的。换句话说,当我们遍历了一个节点的左子树的根节点后,无法直接遍历该节点的右子树的根节点。这里我们可以借助一个数据结构,先按一定顺序将节点存放起来,再从该数据结构取出数据,最
- 2025-01-22翻转二叉树(力扣226)
写这道题之前需要熟悉二叉树的遍历,可以看我的这两篇文章:二叉树的遍历(深度遍历)-CSDN博客,二叉树的层次遍历(广度优先)-CSDN博客所谓翻转二叉树,就是将每一个节点的左孩子和右孩子交换(注意这里指的是指针交换,而不是交换节点的数值)。无非就是在遍历二叉树的基础上调用一下swap
- 2025-01-22卡特兰数
求解\(Catalan(n)\)的四个公式:\[f(n)=C_{2n}^{n}-C_{2n}^{n-1}\]\[f(n)=C_{2n}^{n}/(n+1)\]\[f(n)=f(n-1)*(4n-2)/(n+1)\]\[f(n)=\sum_{i=0}^{n-1}f(i)*f(n-1-i)\]\(Catalan(n)\)的相关应用(简记为\(C_n\)):栈混洗\(->\)\(C_n
- 2025-01-21数据结构-二叉树
树的相关概念:1、节点的度:树中一个节点的孩子个数称为该节点的度,所有节点的度的最大值是树的度2、分支节点:度大于0的节点称为分支节点3、叶子结点:度为0的节点称为叶子结点4、节点的层次(深度):从上往下数,根节点为1层,依次往下加15、树的高度(深度):树中节点的最大层次6、树
- 2025-01-20【刷题实录之二叉树】leecode429. N 叉树的层序遍历(层序遍历)
题目:给定一个N叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由null值分隔。题解:本体是层序遍历的变形,只需要将“左右孩子入队”变成“所有孩子入队”即可,需对结点数据结构有深入把握。代码(C++):classSolution{public:
- 2025-01-202110 加分二叉树
描述设一个 n 个节点的二叉树 tree 的中序遍历为 (1,2,3,⋯,n),其中数字 1,2,3,⋯,n 为节点编号。每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 di,tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含 tree 本身)的加分计算方法如下:记 subtree
- 2025-01-192024网安数据结构恐龙提纲
2024网安数据结构
- 2025-01-19【9.1】树结构-从先序遍历还原二叉树
一、题目 我们从二叉树的根节点root 开始进行深度优先搜索。 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为D,则其直接子节点的深度为D+1。根节点的深度为0)。
- 2025-01-18树(基础)
树1定义1.1树是什么树是一种数据结构,因为形似倒着的树而得名.1.2树的定义递归定义1.2.1有根树的定义形象化的,如图1,有根树存在根节点这一定义,从根节点可以分出任意个分支,这任意个分支又可以继续细分,分出的节点称为“子节点”。抽象化的,树也是\(N\)个节点和\(N-1\)
- 2025-01-18数据结构期末复习
数据结构期末复习1绪论算法的基本概念数据结构的基本概念数据抽象和抽象数据类型描述数据结构和算法算法分析的基本方法2线性表线性表的定义及基本操作线性表的顺序存储线性表的链接存储3栈和队列栈和队列的基本概念栈和队列的顺序存储结构栈和队列的链式存储结构
- 2025-01-18代码随想录:二叉树的公共祖先
这道题是真巧妙,巧妙有两点不用区分两个目标节点,只要命中了,就往上代码可以处理一个节点本来就是另一个节点祖先的情况/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode(int
- 2025-01-17大一计算机的自学总结:二叉树三种序的非递归遍历
前言二叉树的递归遍历在我上一篇“二叉树及其三种序的递归遍历”里有。其中用到的“BinaryTree”也在链接文章的“二叉树的创建”里。大一计算机的自学总结:二叉树及其三种序的递归遍历而非递归遍历是借助栈的特性,会更难更复杂。TvT......一、先序遍历#include<bits/stdc++.
- 2025-01-17【二叉树】已知前序中序、中序后序遍历构造二叉树
105.从前序与中序遍历序列构造二叉树-力扣(LeetCode)/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx
- 2025-01-17编程题-最小高度树
题目:给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。解法一(二分查找+二叉搜索树构建):二叉搜索树的中序遍历是升序序列,题目给定的数组是按照升序排列的有序数组,因此可以确保数组是二叉搜索树的中序遍历序列。二叉搜索树中,左子树的
- 2025-01-14数据结构—《二叉树的定义与特性》
目录1.二叉树的定义2.特殊的二叉树1)满二叉树2)完全二叉树3)二叉排序树。4)平衡二又树。5)正则二文树3.二叉树的性质4.二叉树的存储结构1)顺序存储结构2)链式存储结构1.二叉树的定义二叉树是一种特殊的树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大
- 2025-01-14数据结构------树
前言:前面我们学习了栈和队列。今天我们来学习一种新的数据结构---------树。首先我们来了解一下树的概念。1.树的概念与结构前面我们学习过的顺序表,栈都是一种顺序结构。链表,队列是链式结构。今天学习的树也是一种链式结构。它是由n(n>=0)个有限节点组成一个具有层次关系
- 2025-01-14数据结构之链式二叉树
前言:前面我们学习了树相关的概念及堆的实现,今天来看看二叉树的实现。正式实现二叉树前,我们先了解一些基础知识。对于二叉树基础知识不清楚的可以观看数据结构------树这篇文章,回顾一下知识,有助于理解二叉树。二叉树的遍历方式都有哪些呢?.前序遍历:按照根节点,左节点,右节
- 2025-01-13代码随想录:最大二叉树
白送/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(nullptr),right(nullptr){}
- 2025-01-13代码随想录:从中序与后序遍历序列构造二叉树
/**Definitionforabinarytreenode.structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode():val(0),left(nullptr),right(nullptr){}TreeNode(intx):val(x),left(nullptr),right(nullptr){}TreeNode(intx,TreeNo
- 2025-01-13LeetCode 热题 HOT 100
点个关注,不迷路!(╯▽╰)好香~~在学习过程中,借助一些优秀的工具可以极大地提升我们的学习效率。例如,使用LeetCode插件,它能够帮助你显示力扣周赛难度分数,让你更好地了解题目的难度,从而合理安排学习计划。算法学习路线推荐基础夯实:先过B站“灵茶山艾府”的“基础算法
- 2025-01-12代码随想录:完全二叉树的节点个数
拿到一个节点,先判断是不是等边三角形,若是直接返回2^n-1,位运算写在专题中/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*
- 2025-01-12LeetCode:102.二叉树的层序遍历
LeetCode:102.二叉树的层序遍历解题思路层序遍历顺序就是广度优先遍历。不过在遍历时候需要记录当前节点所处的层级,方便将其添加到不同的数组中。/***Definitionforabinarytreenode.*functionTreeNode(val,left,right){*this.val=(val===undefined?0:
- 2025-01-12LeetCode:111.二叉树的最小深度
LeetCode:111.二叉树的最小深度解题思路求最小深度,考虑使用广度优先遍历。在广度优先遍历过程中,遇到叶子节点,停止遍历,返回节点层级。解题步骤广度优先遍历整棵树,并记录每个节点的层级。遇到叶子节点,返回节点层级,停止遍历。//dfsvarminDepth=function(root){if(!root
- 2025-01-12数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)
将有序数组转换为二叉搜索树https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/描述给你一个整数数组nums,其中元素已经按升序排列请你将其转换为一棵平衡二叉搜索树示例1输入:nums=[-10,-3,0,5,9]输出:[0,-3,9,-10,nul