初學二叉樹札記 求二叉樹的層次遍歷!不太理解

2021-09-11 01:22:40 字數 1763 閱讀 6283

題目為求二叉樹的層次遍歷,其中不理解的地方為涉及棧和佇列的內容,還有i與len的位置對結果的影響!!

題目位址求二叉樹的層次遍歷

參考其他博主的**如下

#include #include #include char st1[100];

char st2[100];

struct lqc

;struct lqc *create(int len,char *st1,char *st2)

root=(struct lqc *)malloc(sizeof(struct lqc));

root->data=st1[0];

for(i=0;iltree=create(i,st1+1,st2);

root->rtree=create(len-i-1,st1+i+1,st2+i+1);

return root;

}void cengxu(struct lqc *root)

int in=0;

int out=0;

struct lqc *p[100],*now;

p[in++]=root;

while(outdata);

if(now->ltree!=null)

if(now->rtree!=null)

}}int main()

return 0;

}

疑惑(1)層序函式內運用到棧和佇列的地方,in++與out++不清楚!

void cengxu(struct lqc *root)

int in=0;

int out=0;

struct lqc *p[100],*now;

p[in++]=root;

while(outdata);

if(now->ltree!=null)

if(now->rtree!=null)

}}

疑惑(2):將i與len的值定義在函式頭部與定義在運用到i與len的函式內部結果不相同!

錯誤**如下

#include #include #include int i,len;

char st1[100];

char st2[100];

struct lqc

;struct lqc *create(int len,char *st1,char *st2)

root=(struct lqc *)malloc(sizeof(struct lqc));

root->data=st1[0];

for(i=0;iltree=create(i,st1+1,st2);

root->rtree=create(len-i-1,st1+i+1,st2+i+1);

return root;

}void cengxu(struct lqc *root)

int in=0;

int out=0;

struct lqc *p[100],*now;

p[in++]=root;

while(outdata);

if(now->ltree!=null)

if(now->rtree!=null)

}}int main()

return 0;

}

錯誤結果

1

abcbca

abbccc錯誤結果

正確結果應該為abc

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

leetcode 二叉樹 二叉樹的層次遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其層次遍歷結果 3 9,20 15,7 方法一 遞迴 思路 比較訪問節點所在層次level和當前最高層次len levels 判定是否需...