《程式設計之美-3.10》p252
給定一棵二叉樹,壓球按分層遍歷該二叉樹,即從上到下按層次訪問該二叉樹(每一層將單獨輸出一行),每一層要求訪問的順序為從左到右,並將節點依次編號。分層輸出二叉樹。
struct node
void printnodebylevel(node* root){};
輸出為: 1
2 34 5 6
7 8並寫出另外乙個函式,列印二叉樹中某層次的節點(從左到右),其中根節點為第0層,函式原型為int printnodeatlevel(node* root, int level),成功返回1,失敗則返回0.
1.二叉樹的分層遍歷主要看如何遞迴
2. 先寫出針對某層的遍歷後,在寫針對所有層的遍歷。
對於層次遍歷
int printnodeatlevel(node* root, int level)
int printnodeatlevelret(node* root, int level)
return printnodeatlevel(root->lchild,level -1)+printnodeatlevel(root->lchild,level -1);
}
採用遞迴演算法,思路清晰。
缺點:遞迴函式呼叫效率低,時空複雜。
void printnodebylevel(node* root,int depth)
cout<
void printbfs(node* root)
while (!q.empty());
}
void link(node* nodes, int parent, int left, int right)
int main()
;
for (int i = 1; i < 9; i++)
test1[i].data = i;
link(test1, 1, 2, 3);
link(test1, 2, 4, 5);
link(test1, 3, 6, -1);
link(test1, 5, 7, 8);
printbfs(&test1[1]);
cout << endl << endl;
printnodebylevel(&test1[1]);
cout << endl;
return 0;
}
分層遍歷二叉樹
include include struct node struct node inittree for i 0 i 2 i tree 3 lchild tree 7 tree 5 rchild tree 8 return tree 0 int printnodeatlevel struct nod...
二叉樹的分層遍歷
二叉樹除了前 中 後序三種遍歷方式外,有時候還要用到分層遍歷。分層遍歷就是二叉樹的廣度優先演算法,暫時還沒有見過圖的廣度優先演算法,據說廣度優先演算法都要使用乙個輔助佇列。題目一 分層遍歷二叉樹,從上往下列印二叉樹的每乙個節點,同一層次的節點按照從左到右的順序列印。下圖順序輸出1 2 3 4 5 6...
二叉樹的分層遍歷
二叉樹除了前 中 後序三種遍歷方式外,有時候還要用到分層遍歷。分層遍歷就是二叉樹的廣度優先演算法,暫時還沒有見過圖的廣度優先演算法,據說廣度優先演算法都要使用乙個輔助佇列。題目一 分層遍歷二叉樹,從上往下列印二叉樹的每乙個節點,同一層次的節點按照從左到右的順序列印。下圖順序輸出1 2 3 4 5 6...