草庐IT

树和二叉树

全部标签

【数据结构】二叉树详解(2)

⭐️前言✨往期文章链接:二叉树的概念性质上一篇我们讲了二叉树的结构定义,以及前序/中序/后序的递归遍历,还有一些二叉树的接口实现,本篇我们补充一个二叉树的接口BinaryTreeDepth。✨上一篇文章链接:二叉树详解(1)前篇:⭐️二叉树的其他接口//求二叉树的深度intBinaryTreeDepth(BinaryTreeNode*root);BinaryTreeDepth实现:intBinaryTreeDepth(BinaryTreeNode*root){ //空树没有高度直接返回0 if(root==NULL){ return0; } //递归获取左子树的高度 intleftTree

数据结构入门(C语言版)二叉树的顺序结构及堆的概念及结构实现应用

二叉树的顺序结构及堆的概念及结构实现二叉树的顺序结构堆的概念及结构堆的实现1、堆向下调整算法2、堆的创建3、堆的插入4、堆的实现向上调整(AdjustUp)向下调整(AdjustDown)堆的初始化(HeapInit)堆的销毁(HeapDestroy)堆的插入(HeapPush)堆的删除(HeapPop)取堆顶的数据(HeapTop)堆的打印(HeapPrint)堆的判空(HeapEmpty)堆的数据个数(HeapSize)堆排序的简易例子结语二叉树的顺序结构普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使

数据结构入门(C语言版)二叉树的顺序结构及堆的概念及结构实现应用

二叉树的顺序结构及堆的概念及结构实现二叉树的顺序结构堆的概念及结构堆的实现1、堆向下调整算法2、堆的创建3、堆的插入4、堆的实现向上调整(AdjustUp)向下调整(AdjustDown)堆的初始化(HeapInit)堆的销毁(HeapDestroy)堆的插入(HeapPush)堆的删除(HeapPop)取堆顶的数据(HeapTop)堆的打印(HeapPrint)堆的判空(HeapEmpty)堆的数据个数(HeapSize)堆排序的简易例子结语二叉树的顺序结构普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使

leetcode 101.对称二叉树

⭐️题目描述🌟leetcode链接:对称二叉树思路:这道题和leetcode100.相同的树类似,是上一道的变形题。✨leetcode100.相同的树代码链接:【往期文章】leetcode100.相同的树。这道题把根的左子树和右子树看作两个不同的树来,需要注意的是,每次往下递归的时候,是当前root->left与root->right和root->right与root->left来判断是否是相同的树(因为是判断是否对称)。1️⃣代码:boolisSame(structTreeNode*tree1,structTreeNode*tree2){//如果两个都为空说明结构相同if(tree1==NU

【数据结构】前中后层序遍历 --二叉树的结构特点与遍历方式

 Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。🌈个人主页:主页链接🌈算法专栏:专栏链接     我会一直往里填充内容哒!🌈LeetCode专栏:专栏链接     目前在刷初级算法的LeetBook。若每日一题当中有力所能及的题目,也会当天做完发出🌈代码仓库:Gitee链接🌈点击关注=收获更多优质内容🌈目录0.二叉树的链式结构实现先来看看BuyNode():1.前序遍历:1.1前序遍历代码实现1.2深度优先搜索2.中序遍历:2.1中序遍历代码实现3.后序遍历: 3.1后序遍历代码实现4.前中后遍历的差别及互相转换4.1前中推树的

【数据结构】前中后层序遍历 --二叉树的结构特点与遍历方式

 Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。🌈个人主页:主页链接🌈算法专栏:专栏链接     我会一直往里填充内容哒!🌈LeetCode专栏:专栏链接     目前在刷初级算法的LeetBook。若每日一题当中有力所能及的题目,也会当天做完发出🌈代码仓库:Gitee链接🌈点击关注=收获更多优质内容🌈目录0.二叉树的链式结构实现先来看看BuyNode():1.前序遍历:1.1前序遍历代码实现1.2深度优先搜索2.中序遍历:2.1中序遍历代码实现3.后序遍历: 3.1后序遍历代码实现4.前中后遍历的差别及互相转换4.1前中推树的

剑指offer12 矩阵中的路径 13 机器人的运动范围 34.二叉树中和为某一值得路径

classSolution{public:boolexist(vectorvectorchar>>&board,stringword){introw=board.size(),col=board[0].size();intindex=0,i=0,j=0;if(word.size()>row*col)return0;//vector>visit[row][col];//标记当前位置有没有被访问过vectorvectorint>>visit(row,vectorint>(col));boolflag=1;while(irow&jcol){cout"board[i][j]:"board[i][j]e

【C++】二叉搜索树的模拟实现

🌇个人主页:平凡的小苏📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风翻盘。🛸C++专栏:C++内功修炼基地>家人们更新不易,你们的👍点赞👍和⭐关注⭐真的对我真重要,各位路过的友友麻烦多多点赞关注。欢迎你们的私信提问,感谢你们的转发!关注我,关注我,关注我,你们将会看到更多的优质内容!!一、二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:1.若他的左子树不为空,则左子树上所有节点的值小于根节点的值2.若他的右子树不为空,则右子树上所有节点的值大于根节点的值3.它的左右子树

秋招算法备战第17天 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

110.平衡二叉树-力扣(Leetcode)明确后续遍历,借用昨天最后一题的参考思路,一次AC#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defisBalanced(self,root:Optional[TreeNode])->bool:self.bool_balanced=Truedefcompare_height(cur):ifcur==

代码随想录算法训练营第41天 | 动态规划 part03 ● 343. 整数拆分 ● 96.不同的二叉搜索树

day40休息日#343 整数拆分 花了好久理解intintegerBreak(intn){vectordp(n+1,0);dp[1]=1;dp[2]=1;for(inti=3;i=1;j--//intj=1;j自己AC花了30min,但后来理解随想录和我的不同的时候,想了一个多小时(也有放弃去做别的然后再返回来想,反正花了好久)主要在推导公式上,dp在把n需要的乘积分成两个部分,第二个部分找dp[]我写的:dp[i]=max(max(j,dp[j])*max(i-j,dp[i-j]),dp[i]);随想录的:dp[i]=max(j*max(i-j,dp[i-j]),dp[i]);我的能AC但