二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷
相關知識:
映象反轉:資料傳送
二叉樹:知識大集合
題目練習:題目集
模板程式碼:
#include<iostream>
#include<queue>
using namespace std;
const int N=100;
struct tree
{
char data;
struct tree *lchild;
struct tree *rchlid;
};
typedef tree* B;
tree *CreateBIT(char *a,char *b,int n)//構造二叉樹
{
tree *t;
int k;
char *p;
if(n<=0)return NULL;
//printf("%d ",n);
t=new tree;
t->data = *a;
for(p=b;p<b+n;p++)//找到根節點
{
if(*p==*a)
{
break;
}
}
k=p-b;//確定位置
t->lchild=CreateBIT(a+1,b,k);//找出左子樹的中序和前序
t->rchlid=CreateBIT(a+k+1,p+1,n-k-1);//右子樹的中序和前序
return t;
}
void print(tree *&b)//前序遍歷
{
if(b!=NULL)
{
printf("%c",b->data);
print(b->lchild);
print(b->rchlid);
}
}
void print1(tree *&b)//層次遍歷
{
queue<B> q;
if(b!=NULL)
{
q.push(b);
} //加入根節點
while(!q.empty())
{
tree *p;
p=q.front();
q.pop();
printf("%c",p->data);
if(p->lchild)
{
q.push(p->lchild);
}
if(p->rchlid)
{
q.push(p->rchlid);
}
}//層層加入並輸出
}
tree *fanzhuang(tree *&b)
{
tree *tmp;
if(b==NULL)return NULL;
tmp = b->lchild;
b->lchild = b->rchlid;
b->rchlid = tmp;//反轉
fanzhuang(b->lchild);
fanzhuang(b->rchlid);//遞迴
return b;
}
int main()
{
int n;
int pre[N],p[N];
char a[N],b[N];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>pre[i];//中序遍歷
}
for(int i=0;i<n;i++)
{
cin>>p[i];//前序遍歷
}
for(int i=0;i<n;i++)
{
a[i]=pre[i]+'0';
b[i]=p[i]+'0';
}
a[n]=b[n]='\0';
tree *c;
c=new tree;
c=CreateBIT(b,a,n);
c=fanzhuang(c);//映象翻轉
print1(c);//層次遍歷
return 0;
}
/*
*/
輸入:
7
1 2 3 4 5 6 7
4 1 3 2 6 5 7
輸出:(反轉後的層次遍歷輸出)
4617532
相關文章
- LintCode 前序遍歷和中序遍歷樹構造二叉樹二叉樹
- 二叉樹建立,前序遍歷,中序遍歷,後序遍歷 思路二叉樹
- 二叉樹的建立、前序遍歷、中序遍歷、後序遍歷二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- Construct Binary Tree from Preorder and Inorder Traversal(前序遍歷和中序遍歷樹構造二叉樹)...Struct二叉樹
- 層序遍歷二叉樹二叉樹
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- 889. 根據前序和後序遍歷構造二叉樹二叉樹
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- 資料結構與演算法——二叉樹的前序遍歷,中序遍歷,後序遍歷資料結構演算法二叉樹
- 【根據前序和中序遍歷構造二叉樹】棧+迭代 || 遞迴二叉樹遞迴
- 二叉樹的層序遍歷二叉樹
- 388,先序遍歷構造二叉樹二叉樹
- C4top-玩轉二叉樹(根據前序中序映象反轉後層次遍歷)二叉樹
- 中序線索二叉樹的構造和遍歷二叉樹
- 二叉樹的前序、中序、後序三種遍歷二叉樹
- 關於二叉樹的前序遍歷、中序遍歷、刪除元素、插入元素二叉樹
- 通過層次遍歷計算二叉樹的層數二叉樹
- 二叉樹的前序,中序,後序遍歷方法總結二叉樹
- 從中序與後序遍歷序列構造二叉樹二叉樹
- 建立二叉樹:層次遍歷--樹的寬度高度,後序遍歷--祖先節點二叉樹
- Leetcode 889. 根據前序和後序遍歷構造二叉樹LeetCode二叉樹
- 二叉樹--後序遍歷二叉樹
- 二叉樹的構造與遍歷二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- LeetCode-105-從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- 劍指offer:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。二叉樹
- 線索二叉樹的構造和遍歷二叉樹
- 二叉樹中序和後序遍歷表示式二叉樹
- 144. 二叉樹的前序遍歷二叉樹
- 二叉樹---遍歷二叉樹
- 二叉樹遍歷二叉樹
- 二叉樹的按層遍歷二叉樹
- 刷題系列 - 給出前序和後序遍歷佇列,構造對應二叉樹佇列二叉樹
- 二叉樹的先,中,後序遍歷二叉樹
- 二叉樹的先中後序遍歷二叉樹
- 二叉樹的前中後序遍歷二叉樹