
树
免费的单身汉RainsdRop
这个作者很懒,什么都没留下…
展开
-
Aizu - ALDS1_8_A:Binary Search Tree I
链接:https://vjudge.net/problem/Aizu-ALDS1_8_A 思路 《挑战程序设计竞赛2:算法与数据结构》一书上第169页的练习题。 二叉搜索树的构建,没什么好说的,就说一下二叉搜索树的一些基本知识吧。 二叉搜索树,又叫二叉排序树、二叉查找树,名字挺多。 二叉搜索树可以是一颗空树;如果不是空树,那么这颗二叉树必满足: 左子树上所有的结点值都小于根节点;右子树上所有的结点值都大于根节点。 二叉搜索树的中序遍历的结果一定是一个递增序列。 了解了这些,这道题就没问题了。原创 2020-12-04 22:51:13 · 142 阅读 · 0 评论 -
Aizu - ALDS1_7_D:Reconstruction of a Tree(树的重建)
链接:https://vjudge.net/problem/Aizu-ALDS1_7_D 思路 《挑战程序设计竞赛2:算法与数据结构》一书上第163页的练习题。 根据树的先序序列和中序序列输出后序序列,不少人会想:这不很简单,我把树重建出来然后跑一遍后序不就完事了? 这就太过于平凡,就不太符合我的气质[doge],所以这里我们看一下如何直接根据先序序列和和中序序列构建后序序列。 关键函数来了: int findmid(int m) //找到m在中序序列中的位置 { for(in原创 2020-12-03 23:05:08 · 182 阅读 · 0 评论 -
Aizu - ALDS1_7_B:Binary Trees(二叉树的表达)
链接:https://vjudge.net/problem/Aizu-ALDS1_7_B 思路 《挑战程序设计竞赛2:算法和数据结构》一书第154页的例题。 输出信息从左向右依次为: u的结点编号 u的父皇 u的hxd u的子结点数 u的深度, u的高度 u的种类 首先这道题使用左子右子存储法(个人称呼)存储结点信息: struct node { int parent,left,right,deep,height,son; //deep:深度 height:高度 son:儿子数 }; 对原创 2020-12-02 22:27:32 · 198 阅读 · 0 评论 -
Aizu - ALDS1_7_A:Rooted Trees(有根树的表达)
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+50; struct node { int parent,left,right,deep; } T[maxn]; int getdeep(int o,int deep) { T[o].deep=deep; if(T[o].right!=-1) getdeep(T[o].right,deep); if(T[o].left!=原创 2020-12-01 21:46:29 · 264 阅读 · 0 评论