首页 > 其他分享 >tree-test

tree-test

时间:2023-07-03 11:00:01浏览次数:38  
标签:lchild BiTree tree BiTNode Tree test NULL root

#include <iostream>
#include <stack>

using namespace std;

typedef struct BiTNode{
	char data;
	struct BiTNode* lchild;
	struct BiTNode* rchild;
}BiTNode,*BiTree;

void CreateTree(BiTree* Tree){
	char ch;
	ch=getchar();
	if(ch=='.')	*Tree=NULL;
	else{
		*Tree = (BiTree)malloc(sizeof(BiTNode));
		(*Tree)->data=ch;
		CreateTree(&(*Tree)->lchild);
		CreateTree(&(*Tree)->rchild);
	}
} 

void Preorder(BiTree t){
	if(t==NULL)	return;
	cout<<t->data;
	Preorder(t->lchild);
	Preorder(t->rchild);
}

void Inorder(BiTree t){
	if(t==NULL)	return;
	stack<BiTree> s;
	BiTree p=t;
	while(p!=NULL || !s.empty()){
		if(p!=NULL){
			s.push(p);
			p=p->lchild;
		}else{
			p=s.top();
			cout<<p->data<<" ";
			s.pop();
			p=p->rchild; 
		}
	}
} 

void Postorder(BiTree root){
	stack<BiTree> s;
	BiTree p=root,r=NULL;
	while(p!=NULL || !s.empty()){
		while(p!=NULL){
			s.push(p);
			p=p->lchild;
		}
		if(!s.empty()){
			p=s.top();
			if(p==NULL || p->rchild==r){
				cout<<p->data<<" ";
				r=p;
				p=NULL;
				s.pop();
			}else{
				p=p->rchild;
			}
		}
	} 
}

int PostTreeDepth(BiTree root){
	if(root==NULL)	return 0;
	int l,r,res;
	l=PostTreeDepth(root->lchild);
	r=PostTreeDepth(root->rchild);
	res=(l>r)?l:r;
	return res+1; 
}

int main(){
	BiTree t=NULL;
	CreateTree(&t);
	Preorder(t);
	return 0;
}

标签:lchild,BiTree,tree,BiTNode,Tree,test,NULL,root
From: https://www.cnblogs.com/benbenlzw/p/17522210.html

相关文章

  • AtCoder Beginner Contest 308 G Minimum Xor Pair Query
    洛谷传送门AtCoder传送门考虑没有删除操作怎么做。可以动态维护\(ans\),新加进来一个\(x\),我们计算\(\min\limits_{y\inS}x\oplusy\)。对\(S\)建01Trie,然后从高位往低位按位贪心,在01Trie上优先往与\(x\)这一位相同的方向走,但是前提是它的子树内有数,对于01Trie......
  • AtCoder Beginner Contest 308 A~F
    AtCoderBeginnerContest308手速有点慢A-NewScheme判断给定数字是否满足条件voidsolve(){ boolok=true; inta[10]; for(inti=1;i<=8;i++) cin>>a[i]; for(inti=1;i<=8;i++) { if(i>=2&&a[i]<a[i-1]) ok=......
  • Shortest Time(最短时间)
    题目描述如图所示,有若干个城市,它们之间有道路连通,可以互相到达,从一个城市到另一个城市时间为1。现在给出起点城市A,终点城市B,和N条道路。问从A到B最短时间。Input第一行A,B,N(A,B,N<=30),B为最大城市标号;接下来N行,每行两个数x,y,表示城市x和城市y有道路相连。Output最短到达时间......
  • 将MembershipCreateStatus枚举成员翻译成自定义信息
    publicstaticclassAccountValidation{publicstaticstringErrorCodeToString(MembershipCreateStatuscreateStatus){switch(createStatus){caseMembershipCreateStatus.DuplicateUserName:......
  • AtCoder Beginner Contest 308
    A:1#include<cstdio>2#include<cstring>3#include<algorithm>4#include<iostream>5#include<string>6#include<vector>7#include<stack>8#include<bitset>9#include<cstdlib>10#include......
  • AtCoder Grand Contest 021 E Ball Eat Chameleons
    洛谷传送门AtCoder传送门容易发现一个变色龙是红色当且仅当,设\(R\)为红球数量,\(B\)为蓝球数量,那么\(R\geB\)或\(R=B\)且最后一个球是蓝球。考虑如何判定一个颜色序列是否可行。考虑贪心。若\(R<B\)显然不行。若\(R\geB+n\),每个变色龙都可以分到比蓝球......
  • [atAGC062E]Overlap Binary Tree
    记\(m=\frac{n+1}{2}\),即二叉树的叶子个数对于合法序列,按以下方式生成其对应的二叉树:(此处二叉树指无标号、以一个点为根且每个非叶节点恰有两个儿子的树)恰存在一个区间与其余区间均有交,将其作为根并(在序列中)删除恰存在一个\(i\in[1,n)\)使得\(\max_{1\lej\lei}R_{j}<L_{i+......
  • AtCoder Beginner Contest 307(E,F,G)
    AtCoderBeginnerContest307(E,F,G)E(dp)E这个题大意就是我们需要组成一个长度为\(n\)的数组,满足两个相邻的数字不可以相等,其中,\(a_1\)和\(a_n\)也是相邻的,我们可以选择的数字为\(0\)到\(m-1\),问最后有多少种不同的组成方式满足以上条件。题目大意很简单,就是有点难想,如果\(a......
  • Educational Codeforces Round 151 [div.2 #A-C] 赛后总结(contest/1845)
    link\(\textcolor{lightgreen}{A}-\textcolor{yellow}{B}-\textcolor{yellow}{C}-\textcolor{red}{D}-\textcolor{red}{E}-\color{red}{F}\)A给你一个数n,在给你一个数列1~k,其中x不能用,然后用其他的数任意累加,如能得到n,输出所用数字数量和具体数列。一眼分类。先分是......
  • DistanceQueriesonaTree
    [ABC294G]DistanceQueriesonaTree首先树剖+线段树肯定可以直接用树剖模板过掉,但是带两个\(\log\)。我们考虑更优秀的做法。拟定\(1\)为根,首先维护前缀\(dis[i]\)为从\(1\simi\)的路径上的所有边权之和(这里记边权为在下面的点的点权)。显然,没有修改时答案是\(dis_a......