題目為求二叉樹的層次遍歷,其中不理解的地方為涉及棧和佇列的內容,還有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 判定是否需...