題目 1385 由前序和中序構建二叉樹

2021-07-04 22:09:35 字數 1084 閱讀 2406

蠻懷舊的題目,記得大一就見過一直沒做過,沒難度,純小心吧。

類似的是有中序和後續構建二叉樹。比如

思路很簡單 遞迴構造:

#include #include #include #include #include using namespace std;

const int size = 1000+10;

struct node

node(int val, node *l, node *r)

};int n;

int head[size],mid[size];

int flag,getnode;

node* buildtree(int headptr, int midleft, int midright)else

}if(midleft > midright)return null;

for(int i=midleft;i<=midright;i++)

if(pos == -1)return null;

int hasleft=0;//,hasright=0;

if(pos == midleft)else

if(pos == midright)elseelse

if(father->right == null)return null;

}father->v = head[headptr];

getnode++;

return father;

}/*void print(node *nod)*/

void print(node *nod)

void sear(node *father)

if(father->left)sear(father->left);

if(father->right)sear(father->right);

print(father);

}int main(){

//freopen("06.txt", "r", stdin);

int in;

while(~scanf("%d", &n)){

flag = getnode = 0;

for(int i=0;i

由前序遍歷和中序遍歷構建二叉樹(C 語言)

不要自卑,去提公升實力 網際網路行業誰技術牛誰是爹 如果文章可以帶給你能量,那是最好的事!請相信自己 加油o 設計思路 char pre為前序遍歷的順序 char in為中序遍歷的順序 首先建立乙個指標p,用迴圈在in中找到根節點 left為左子樹個數 p in 指標差值 right為右子樹個數 n...

由前序和中序建立二叉樹

c語言版本 1.找出根節點 先序的第乙個節點是根節點 2.分出左右子樹 再根據中序分出左右子樹 在中序中找出與根節點相同的節點,該位置兩邊分別是左右子樹 3.遞迴 4.返回根節點版本1 低效,不借助其他工具類 definition for a binary tree node.public clas...

構建二叉樹(前序 中序,中序 後序)

題目鏈結 1.返回值和引數 輸出前序和中序的 vector int 和起止索引 int,輸出樹的根節點 2.單層遞迴邏輯 前序和中序只有乙個元素,返回,否則在中序中找到前序的首位元素,在將中序按次元素劃分為兩個部分,當前節點的左子樹根據劃分的左邊部分得到,右子樹根據右邊部分得到 3.終止條件 當前陣...