分層遍歷二叉樹

2021-06-21 17:00:55 字數 1433 閱讀 8245

《程式設計之美-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...