二叉树
tomjobs
别慌,慌也没用
展开
-
LeetCode 662. 二叉树最大宽度(层序遍历,防溢出)
题意:给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。思路:一开始用深度优先遍历计数来写的,但是这样会溢出。通过层序遍历,每次优先遍历完这一层,并且计数值减去起点计数值,就不会溢出了。class Solution {public: int widthOfBinaryTree原创 2021-10-12 20:38:12 · 258 阅读 · 0 评论 -
LeetCode 440. 字典序的第K小数字(递归,十叉树)
字典序的第K小数字给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。注意:1 ≤ k ≤ n ≤ 109。示例 :输入:n: 13 k: 2输出:10解释:字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。思路:gjx说这是字节面试题,感觉有点意思。写过各种求第k大数(第k个排列,第k个错排排列,通过数位DP求有奇怪限制的第k个二进制串。。。)本题则是字典序第k大。要求字典序第k.原创 2020-11-25 22:25:06 · 433 阅读 · 0 评论 -
二叉树前中后序的非递归遍历(用栈实现)
前序遍历class Solution {public: vector<int> preorderTraversal(TreeNode* root) { stack<TreeNode*>stk; stk.push(root); vector<int>ans; while(!stk.empty()) { TreeNode* now = stk.top();stk.pop();原创 2021-03-14 11:11:59 · 191 阅读 · 0 评论 -
LeetCode 331. 验证二叉树的前序序列化(统计度数,栈)
给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。示例 1:输入: “9,3,4,#,#,1,#,#,2,#,6,#,#”输出: true示例 2:输入: “1,#”输出: false示例 3:输入: “9,#,#,1”输出: false思路:两种写法,统计度数和栈。统计度数: 根节点入度为0,出度为2;其他有效节点的入度为1,出度为2;每个无效节点的入度为1,出度为0。遍历过程中只要保证除了最后一个节点的出度,所有遍历过节点出度-原创 2021-03-13 21:12:40 · 193 阅读 · 0 评论 -
LeetCode889. 根据前序和后序遍历构造二叉树
思路:前序是根左右,后续是左右根,设当前前序为pre数组,后序为post数组。则当前树的根节点为pre.front()pre.front()pre.front()或者post.back()post.back()post.back()。此时我们要划分子问题,对于左子树,根节点为pre[1]pre[1]pre[1],同时找到后序遍历左子树的根节点pos1pos1pos1满足post[pos1]=pre[1]post[pos1]=pre[1]post[pos1]=pre[1]。对于右子树,根节点为pos原创 2020-10-30 11:49:16 · 225 阅读 · 0 评论 -
F - Factor-Free Tree Gym - 101623F(质数,中序遍历,区间)
题意:给出一颗树的中序遍历,要求还原这棵树使得每一个节点的值和其祖先互质思路:参考claris博客题解。对每个数质因子分解,算出每个数左边的第一个不互质位置,右边第一个不互质位置。维护每个点对应的区间,也就是其对应子树。将这些区间放在栈里面,如果当前区间包含栈顶区间,那么弹出栈顶。则按照中序遍历左中右的顺序,最后一个弹出的区间为当前点的左子树,当前栈顶区间为节点父子节点。则无解情况为栈顶区间不包含当前区间,此时父节点不能包括子节点。#include <cstdio>#inc.原创 2020-10-09 22:17:33 · 309 阅读 · 0 评论 -
L2-006 树的遍历 (25分)
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6...原创 2020-02-21 17:36:35 · 257 阅读 · 0 评论 -
L2-004 这是二叉搜索树吗? (25分)
一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。输入格式:输入的第一行给出正整数 N(≤1...原创 2020-02-21 17:20:32 · 366 阅读 · 0 评论 -
L2-011 玩转二叉树 (25分)
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不...原创 2020-02-21 16:05:31 · 307 阅读 · 0 评论 -
Ralph And His Tour in Binary Country CodeForces - 894D(树上前缀和,好题)
Ralph is in the Binary Country. The Binary Country consists of n cities and (n - 1) bidirectional roads connecting the cities. The roads are numbered from 1 to (n - 1), the i-th road connects the city...原创 2019-09-07 23:15:59 · 278 阅读 · 0 评论