1.已知按層遍歷和中序遍歷,匯出先序遍歷;
樣例:中序遍歷:dbafegc
按層遍歷:abcdefg
演算法:掃瞄按層遍歷,按層遍歷的實質是按照節點深度,從左到右對同深度節點進行排序;
因此,可以掃瞄整個按層遍歷,與當前中序遍歷所代表的樹進行匹配!
在中序遍歷中掃瞄到的位於按層遍歷中的最前面的節點,就是當前子樹中,深度最小的節點,
也就是,當前子樹的根節點可以確定。按照先左子樹後右子樹的順序進行遍歷,原因是
按層遍歷和中序遍歷的順序都是先左後右。
code:
#include
#include
#include
using namespace std;
char a[100],b[100];
int lena,lenb;
inline void dfs(int l1,int r1,int l2,int r2)
if(flag==1)
break;
}if(flag==1)
break;
}if(j>l1)
dfs(l1,j-1,0,lenb);
if(j>a>>b;
lena=strlen(a)-1;
lenb=strlen(b)-1;
dfs(0,lena,0,lenb);
return 0;
}2.已知中序遍歷,後序遍歷,求先序遍歷:
掃瞄後序遍歷序列,最後乙個元素為當前樹的根節點,對應到中序遍歷中,將中序遍歷分為左右子樹,分別進行遞迴操作!;
code:
#include
#include
#include
using namespace std;
char a[100],b[100];
int lena,lenb;//a--->mid,b--->last
inline void dfs(int l1,int r1,int l2,int r2)
if(flag==1)
break;
}if(l1>a>>b;
lena=strlen(a),lenb=strlen(b);
dfs(0,lena-1,0,lenb-1);
return 0;
}
行資料結構轉成樹形資料結構
背景 在前後端開發過程中,後端負責提供介面資料,有時前端需要把介面資料轉成其他的格式,本文就用於將具備父子邏輯的行資料轉成樹形結構。如下 function rowdatatotreedata roottreenode,rowdata else i i 1 if roottreenode.childr...
資料結構 樹的遍歷(先序,中序,後序,層次)
通過先序方式建立樹,通過簡單的遞迴就可以實現先序,中序,後序遍歷。層次遍歷還需要用到佇列,當某個節點出隊時,它的左右結點要入隊 如果有的話 include include using namespace std typedef struct node node 通過先序方式建立樹,表示空 a b c...
SQLServer樹形資料結構的資料進行資料統計
前言 前幾天朋友問我,關於sqlserver資料庫中對樹形結構的表資料統計問題,需求大致如下 分類表 遞迴資料 a的子分類是b,b的子分類是c 分類關係不間斷,a為第一層,b為第二層,c為第三層 需要統計 每個分類所在的層數 子分類的總數 和 子分類的層數 解決思路 建立示例表結構,如下 分類示例表...