由中序和後序建立二叉樹,並前序輸出
輸入用例:
BAC
BCA
XDEFAG
XEDGAF
輸出用例:
ABC
FDXEAG
思路與前面那道由前序中序輸出後序思路一樣,前面有詳細的解答
/// /// @file test.cc /// @author miaobeihai([email protected]) /// @date 2017-03-05 16:31:36 /// #include<stdio.h> #include<string.h> int loc=0; char str1[100],str2[100]; struct Node{ Node *rchild; Node *lchild; int data; }Tree[50]; Node *create() { Tree[loc].rchild=Tree[loc].lchild=NULL; return &Tree[loc++]; } void preOrder(Node *T) { if(T){ printf("%c",T->data); if(T->lchild!=NULL) preOrder(T->lchild); if(T->rchild!=NULL) preOrder(T->rchild); //printf("%c",T->data); } } Node *build(int s1,int e1,int s2,int e2) { int idx,i; Node *T=create(); T->data=str2[e2]; for(i=s1;i<=e1;i++) { if(str1[i]==str2[e2]){ idx=i; break; } } if(idx!=s1) { T->lchild=build(s1,idx-1,s2,s2+(idx-s1-1)); } if(idx!=e1) { T->rchild=build(idx+1,e1,s2+(idx-s1),e2-1); } return T; } int main() { while(scanf("%s",str1)!=EOF) { scanf("%s",str2); int len1=strlen(str1); int len2=strlen(str2); Node *T=build(0,len1-1,0,len2-1); preOrder(T); printf("\n"); } return 0; }
相關推薦
由中序和後序建立二叉樹,並前序輸出
輸入用例: BAC BCA XDEFAG XEDGAF 輸出用例: ABC FDXEAG 思路與前面那道由前序中序輸出後序思路一樣,前面有詳細的解答 /// /// @file test.c
轉載-由中序和後續序列建立二叉樹
已知某二叉樹具有n(n>0)個不同的節點,其中序序列是a0a1…an-1,後序序列是b0b1…bn-1。 因為在後序遍歷過程中,先遍歷左子樹,再遍歷右子樹,最後訪問根節點。所以,bn-1必定是二叉樹的根節點,而且bn-1也必定在中序序列中出現。也就是說在中序序列中
java由先根中根遍歷序列建立二叉樹,由標明空子樹建立二叉樹,有完全二叉樹順序儲存結構建立二叉鏈式儲存結構
//由先根和中根遍歷建立二叉樹 public class bitree{ public bitree(String preorder,String inorder,int preindex,int in
由先序遍歷和中序遍歷序列建立二叉樹——
Description 按先序順序和中序順序輸入二叉樹的2個遍歷序列,採用二叉連結串列建立該二叉樹並用後序遍歷順序輸出該二叉樹的後序遍歷序列。 Input 輸入資料有多組,對於每組測試資料 第一行輸入二叉樹的先序序列,第二行為中序序列。 Output 對於每組測試資料輸出該二叉樹
建立一棵用二叉樹連結串列方式儲存的二叉樹,並對其進行遍歷(先序,中序和後序),列印輸出遍歷結果
題目如下 程式碼如下 #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct Node//結構體 {
二叉樹 已知前序中序兩個序列,建立二叉樹(中序和後序也有)
本文主要講二叉樹的建樹,具體的說就是,題目給出你二叉樹的前序和中序,你來建樹,還有一個題目是給出中序和後序來建樹 第一題:A binary tree is a finite set of vertices that is either empty or consists
建立二叉樹,實現二叉樹的先序遍歷、中序和後序遍歷的非遞迴演算法
先序遍歷:若二叉樹為空,則空操作;否則訪問根節點;先序遍歷左子樹;先序遍歷右子樹。 中序遍歷:若二叉樹為空,則空操作;否則中序遍歷左子樹;訪問根節點;中序遍歷右子樹。 後序遍歷:若二叉樹為空,則空操作;否則後序遍歷左子樹;後序遍歷右子樹;訪問根節點。
二叉樹系列——根據前序和中序、中序和後序構建二叉樹
1、根據前序和中序構建二叉樹 思路:在二叉樹的前序遍歷序列中,第一個數字總是樹的根節點的值。但在中序遍歷序列中,根節點的值在序列的中間,左子樹的節點的值位於根節點的值得左邊,而右子樹的節點的值位於根節
二叉樹——判斷兩棵二叉樹是否相等(先序和中序遍歷序列建立二叉樹)
需求: 利用先序遍歷序列和中序遍歷序列來建立兩棵二叉樹,並判斷是否相等 需要先將建立二叉樹 建立的方法是將該二叉樹的先序的序列和中序的序列分別儲存到Pre陣列和Mid陣列中,它們的儲存順序如下: 判斷兩棵樹是否相等 採用遞迴的方法,用先序,中序
實現二叉樹(包括前序、中序、後序遍歷演算法)
以前沒有記筆記的習慣,結果發現曾經實現過的東西居然都忘了,現在又需要花時間去看,去寫,雖然又有所收穫,但是畢竟在走重複的路。 從今天起,開始打路標,為了以後少走回頭路:) 還請高手多指點,不勝感激! 用Java語言實現二叉樹: 1、首先定義一個二叉樹節點類:實現 1)向某個
以二叉連結串列的方式建立一棵二叉樹,並以非遞迴演算法中序輸出;計算二叉樹的繁茂度,並判斷二叉樹是否為完全二叉樹
以二叉連結串列的方式存二叉樹,輸入時要以先序方式輸入,其中,空子樹用#表示。 二叉樹的繁茂度定義為其高度乘其每層結點最大值。演算法為先用遞迴演算法求二叉樹高度:其高度為左右子樹最大值加1,所以用先序遍歷,定義ld與rd分別為左右子樹高度,最後返回其較大值加1即可。二叉樹寬度
樹的學習——(遞迴構建二叉樹、遞迴非遞迴前序中序後序遍歷二叉樹、根據前序序列、中序序列構建二叉樹)
前言 最近兩個星期一直都在斷斷續續的學習二叉樹的資料結構,昨晚突然有點融匯貫通的感覺,這裡記錄一下吧 題目要求 給定前序序列,abc##de#g##f###,構建二叉樹,並且用遞迴和非遞迴兩種方法去做前序,中序和後序遍歷 二叉樹的資料結構 #define STACKSI
重建二叉樹(根據前序和中序遍歷結果)
public TreeNode reConstructBinaryTree(int [] pre,int [] in) { return build(pre,0,pre.length-1,in,0,in.length-1); } public TreeNode build(in
C語言根據前序遍歷和後續遍歷還原二叉樹,並輸出二叉樹的高度
7-23 還原二叉樹 (25 point(s)) 給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。 輸入格式: 輸入首先給出正整數N(≤50),為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為N的不包含重複英文字母(區別大小寫)的字串
先序建立二叉樹,遞迴輸出二叉樹
#include<iostream> #include<cstdio> #include<cstdlib> using namespace std; typedef char ElementType; typedef str
二叉樹 遞迴 前序 中序 後續遍歷【java簡單】
本文最早發表在個人部落格 http://www.xdx97.com/#/single?bid=ead7cb23-ecfa-5108-7c5b-37f8d8696cc2 胡扯:第一次接觸 前中後 遍歷,應該是在上資料結構,玩手機擡頭偶然聽說的。很長一段時間我去記它的規律又因
線索二叉樹原理及前序、中序線索化(Java版)
轉載原文地址:https://blog.csdn.net/UncleMing5371/article/details/54176252一、線索二叉樹原理 前面介紹二叉樹原理及特殊二叉樹文章中提到,二叉樹可以使用兩種儲存結構:順序儲存和二叉連結串列。在使用二叉連結串列
建立二叉樹,按層次遍歷分層次換行輸出
測試輸入:123##4##5## 輸出:1 2 5 3 4 #include<iostream> #include<vector>
構建帶父結點的二叉樹,並輸出所有結點到根結點的位置
在構建好二叉樹後,需要通過一次遍歷來給每個結點的parent賦值,關鍵程式碼如下: void triBtee(BTNode *p,BTNode *q)//給各個結點的parent賦值 { if(p == nullptr) return; p->parent =
[LeetCode] Construct Binary Tree from Inorder and Postorder Traversal 由中序和後序遍歷建立二叉樹
Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume that duplicates do not exist in the tree. 這道題要求從中