二叉樹
Mercury_Lc
宁愿笑着哭
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【二叉树(DFS) - LeetCode】437. 路径总和 III
这篇题解介绍了如何用DFS解决二叉树路径总和III问题。算法采用双递归策略:rootSum函数计算从指定节点出发满足条件的路径数,pathSum函数遍历所有节点,分别调用rootSum计算每个节点作为起点的路径数。通过递归分解问题,最终统计所有可能的路径数量。该方法时间复杂度为O(n²),空间复杂度为O(n)。原创 2025-08-29 16:16:51 · 310 阅读 · 0 评论 -
【二叉树(DFS)- LeetCode】124. 二叉树中的最大路径和
本文介绍了一种使用深度优先搜索(DFS)解决二叉树最大路径和问题的算法。该算法通过递归计算每个节点的最大贡献值,同时维护全局最大值。对于每个节点,其最大路径和可能包含:1)仅自身值;2)自身值加左子树贡献;3)自身值加右子树贡献;4)自身值加左右子树贡献。算法时间复杂度为O(n),空间复杂度为O(h),其中n为节点数,h为树高。关键点在于处理负数贡献时将其置零,以及正确更新全局最大值。原创 2025-08-29 15:10:33 · 243 阅读 · 0 评论 -
【二叉树 - LeetCode】617. 合并二叉树
该题解提供了合并两棵二叉树的递归解法。当两棵树的当前节点都存在时,将第二棵树节点的值加到第一棵树节点上,并递归处理左右子树。若任一节点为空,则返回非空节点。时间复杂度为O(min(m,n)),空间复杂度为O(min(m,n)),其中m和n分别是两棵树的节点数。该方法直接在root1上进行修改,节省了额外空间。原创 2025-08-25 21:52:30 · 527 阅读 · 0 评论 -
【二叉树 - LeetCode】236. 二叉树的最近公共祖先
这道题解使用递归方法在二叉树中寻找两个节点的最近公共祖先(LCA)。关键思路是:递归遍历左右子树,若当前节点等于p或q则直接返回;若左右子树分别找到p和q,当前节点即为LCA;若仅在一侧找到,则返回该侧结果。时间复杂度O(n),空间复杂度O(h),h为树高。该解法简洁高效,通过递归的返回值判断LCA位置,是解决二叉树LCA问题的经典方法。原创 2025-08-25 19:59:30 · 196 阅读 · 0 评论 -
P1030 求先序排列 【STL,二叉树遍历】
https://www.luogu.com.cn/problem/P1030题目描述给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度\le 8≤8)。输入格式22行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。输出格式11行,表示一棵二叉树的先序。输入输出样例输入 #1复制BADCBDCA输出 #1复制ABCD题解:二叉树的遍历分别如下:前序 :根 - 左 - 右中序:左 - 根 - 右原创 2020-10-05 16:10:24 · 348 阅读 · 0 评论 -
大臣的旅费 【树的直径】【DFS】
大臣的旅费Description很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。J是T国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。他有一个钱袋,用于存放往来城市间的路费。聪明的J发现,如果不在某原创 2020-07-06 10:56:33 · 211 阅读 · 0 评论 -
7-4 是否同一棵二叉搜索树 (25 分)
7-4是否同一棵二叉搜索树(25 分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N(≤1...原创 2019-03-11 16:19:12 · 298 阅读 · 0 评论 -
L2-006 树的遍历 (25 分)
L2-006树的遍历(25 分)给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:...原创 2019-03-08 15:55:39 · 550 阅读 · 0 评论 -
L2-011 玩转二叉树 (25 分)
L2-011 玩转二叉树 (25 分)给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树反转...原创 2019-02-25 20:25:42 · 2700 阅读 · 0 评论 -
数据结构实验之二叉树八:(中序后序)求二叉树的深度(SDUT 2804)
#include <stdio.h>#include <stdlib.h>#include <string.h>struct node{ char data ; struct node *l,*r;};struct node *creat(char *inorder,char *postorder,int len){ st...原创 2018-11-08 15:28:40 · 657 阅读 · 0 评论 -
数据结构实验之二叉树七:叶子问题(SDUT 3346)
#include <bits/stdc++.h>using namespace std;struct node{ char data; struct node *lc, *rc;};char a[100];int num = 0;struct node *creat(){ struct node *root; if(a[num++] =...原创 2018-11-08 15:21:39 · 423 阅读 · 0 评论 -
数据结构实验之二叉树四:(先序中序)还原二叉树 (SDUT 3343)
#include <bits/stdc++.h>using namespace std;struct node{ char data; struct node *lc, *rc;};char a[100],b[100];int n;struct node *creat(int len, char a[], char b[]){ if(len =...原创 2018-11-08 15:20:33 · 522 阅读 · 0 评论 -
数据结构实验之二叉树五:层序遍历 (SDUT 3344)
#include <bits/stdc++.h>using namespace std;struct node{ char data; struct node *lc, *rc;};char s[505];int num;struct node *creat(){ struct node *root; if(s[num ++] == '...原创 2018-11-08 15:15:59 · 384 阅读 · 0 评论 -
数据结构实验之二叉树三:统计叶子数 SDUT 3342
#include <stdio.h>#include <string.h>struct node{ char data; struct node *l,*r;};struct node *root;char st[51];int i;int count;struct node *creat(){ struct node *ro...原创 2018-11-08 15:09:27 · 333 阅读 · 0 评论 -
数据结构实验之二叉树二:遍历二叉树 SDUT 3341
#include <bits/stdc++.h>using namespace std;struct Tree{ char data; struct Tree *right; struct Tree *left;};char str[55];int num;struct Tree *creat() { struct Tree * ...原创 2018-11-08 15:07:54 · 339 阅读 · 0 评论 -
数据结构实验之二叉树六:哈夫曼编码(SDUT 3345)
题解:离散中的“最小生成树(最优树)”。#include <bits/stdc++.h>using namespace std;void qusort(int l, int r, int a[]){ int x = a[l]; int i = l, j = r; if(i >= j) return ; while(i...转载 2018-11-13 14:58:25 · 525 阅读 · 0 评论 -
数据结构实验之二叉树一:树的同构 (SDUT 3340)
题解:把原本结构体的左右子树的类型定义成 int 型,用来存放这个结点的左右子树的编号,分别建造两棵二叉树,按个比较,如果在第二棵树中没有找到,那么就不用在判断了。#include <bits/stdc++.h>using namespace std;struct node{ char data; int l,r;};struct node t1[2...翻译 2018-11-13 14:35:47 · 492 阅读 · 0 评论 -
数据结构实验之求二叉树后序遍历和层次遍历(SDUT 2137)
Problem Description 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历和层序遍历。Input 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列。Output每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次...原创 2018-08-17 21:01:40 · 319 阅读 · 0 评论 -
求二叉树的层次遍历(SDUT 2824)
Problem Description已知一颗二叉树的前序遍历和中序遍历,求二叉树的层次遍历。Input输入数据有多组,输入T,代表有T组测试数据。每组数据有两个长度小于50的字符串,第一个字符串为前序遍历,第二个为中序遍历。Output每组输出这颗二叉树的层次遍历。Sample Input2abcbacabdecdbeacSample Output2...原创 2018-08-16 21:00:25 · 392 阅读 · 0 评论
分享