首页 > 其他分享 >PAT 2024年春季 甲级 A-3 Degree of Skewness(二叉树的构建)

PAT 2024年春季 甲级 A-3 Degree of Skewness(二叉树的构建)

时间:2024-12-09 20:13:36浏览次数:2  
标签:Skewness PAT temp int rebuild 二叉树 post root order

 给出后序和中序遍历序列,求出只有左子树和只有右子树的结点之差

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n;
 4 int nl = 0, nr =0;
 5 struct node{
 6     int data, lchild = -1, rchild = -1;
 7 };
 8 vector<node> nodes(1005);
 9 vector<int> in_order, post_order;
10 // 段错误代码,不知为何
11 // string in_order,post_order;
12 // vector<char> tree(1000, ' ');
13 // void rebuild(int p, char root, string in) {
14 //     tree[p] = root;
15 //     if (in.length() <= 1){
16 //         return ;
17 //     }
18 //     string in_left = in.substr(0, in.find(root));
19 //     string in_right = in.substr(in.find(root) + 1);
20 //     for (int i = n - 1; i >= 0; -- i) {
21 //         if (in_left.find(post_order[i])) {
22 //             rebuild(p * 2, post_order[i], in_left);
23 //             break;
24 //         }
25 //     }
26 //     for (int i = n - 1; i >= 0; -- i) {
27 //         if (in_right.find(post_order[i])) {
28 //             rebuild(p * 2 + 1, post_order[i], in_right);
29 //             break;
30 //         }
31 //     }
32 // }
33 int rebuild(int il, int ir, int pl, int pr) { 
34     if (il > ir || pl > pr) {
35         return -1;
36     }
37     int root = post_order[pr];
38     int index;
39     for (index = il; index <= ir; ++ index) {
40         if (in_order[index] == root) {
41             break;
42         }
43     }
44     nodes[root].lchild = rebuild(il, index - 1, pl, pl + index - il - 1);
45     nodes[root].rchild = rebuild(index + 1, ir, pl + index - il, pr - 1);
46     return root;
47 }
48 void dfs(int p) {
49     bool hasleft = false, hasright = false;
50     if (nodes[p].lchild != -1) {
51         hasleft = true;
52         dfs(nodes[p].lchild);
53     }
54     if (nodes[p].rchild != -1) {
55         hasright = true;
56         dfs(nodes[p].rchild);
57     }
58     if (hasleft && !hasright) {
59         nl ++;
60     }
61     if (!hasleft && hasright) {
62         nr ++;
63     }
64 }
65 int main() {
66     cin >> n;
67     int temp;
68     for (int i = 0; i < n; ++ i) {
69         cin >> temp;
70         post_order.push_back(temp);
71     }
72     for (int i = 0; i < n; ++ i) {
73         cin >> temp;
74         in_order.push_back(temp);
75     }
76     int root = rebuild(0, n-1, 0, n-1);
77     dfs(root);
78     cout << root << endl;
79     cout << nl - nr << " = " << nl << " - " << nr;
80 
81 }
82     

 

标签:Skewness,PAT,temp,int,rebuild,二叉树,post,root,order
From: https://www.cnblogs.com/coderhrz/p/18595932

相关文章

  • 使用patoon的一些技巧和MMD Editor的一些技巧
    首先我们将模型导入mmdeditor中,翻到材质这一个地方,然后呢:我们将脸部的相关贴图都换成toon05.bmp,其他的都02吧!这样是对的!然后呢,保存模型一定要保存和原来位置一样的地方!不然会出现白模!2D就是把圆润的东西变得割裂人物主渲染呢我们选择标准上面的二选一(看截图)神奇!已经有效果了......
  • leetcode543.二叉树的直径
    给你一棵二叉树的根节点,返回该树的 直径 。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之间边数表示。示例1:输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]或......
  • 114. 二叉树展开为链表
    问题描述给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展开后的单链表应该与二叉树先序遍历顺序相同。分析注意,这里应该使用同样的TreeNode,也就是评判时,直接看原......
  • LCR 047. 二叉树剪枝(中等)(主站814)
    https://leetcode.cn/problems/pOCWxh/https://leetcode.cn/problems/binary-tree-pruning/难度:☆☆☆题目:给定一个二叉树根节点root,树的每个节点的值要么是0,要么是1。返回移除了所有不包含1的子树的原二叉树。节点node的子树为node本身,以及所有node的后......
  • keil中加入RTOS后报错 Error: L6242E: Cannot link object rtx_delay.o as its attrib
    编译出现以下问题:解决方法(有点怪但有用):点击Target,编译器选择version5版本在C/C++中勾选EnumContaineralwaysint点击OK后会弹出如下界面,不要慌,继续点OK关掉它重新编译,结果如下回到编译器选项,选择version6版本6.点击小绿图标7.确保RTOS已勾选重新编译,结果......
  • 二叉树的C++实现
    文章目录一、二叉树存储的物理结构1.1二叉树基础知识1.2二叉树的存储1.2.1单个节点的存储:1.2.2二叉树的存储二、C++代码实现2.1每个二叉树节点结构体:2.2二叉树类的定义2.3方法实现一、二叉树存储的物理结构1.1二叉树基础知识(1)二叉树的定义:每个节点最多......
  • 二叉树遍历
    前序顺序为根左右递归publicstaticvoidpreLoop(TreeNoderoot){System.out.println(root.value);if(root.left!=null){preLoop(root.left);}if(root.right!=null){preLoop(root.right);}}其他使用栈,以根右左的顺......
  • 【Leetcode Top 100】94. 二叉树的中序遍历
    问题背景给定一个二叉树的根节点rootrootroot,返回它的中序遍历。数据约......
  • 文献阅读笔记|将H&E图像转换为虚拟免疫组化图像的病理学工具|Accelerating histopatho
    论文链接:https://doi.org/10.1038/s42256-024-00889-5论文信息:发表于NatureMachineIntelligence。2023年12月4日投稿,2024年7月29日接收,2024年9月9日online目录AbstractIntroduction1、从HE染色病理图像合成多重免疫组化(IHC)染色图像的意义2、虚拟染色【1】含义介绍【2】配对模......
  • 199.二叉树的右视图
    /***@param{TreeNode}root*@return{number[]}*/varrightSideView=function(root){if(!root)return[];letdethMap=newMap();//Map夺储,key是当国节点的高度,value是我们当前节点的信;letqueue=[[root,0]];while(queue.length){//取出......