面試題23 從上往下列印二叉樹

2021-08-03 02:34:07 字數 1865 閱讀 5034

題目:從上往下列印二叉樹的每個節點,同一行的節點按照從左到右列印。

**示例:

標頭檔案:binarytree.h

#pragma once

#includestruct binarytreenode

;binarytreenode* createbinarytreenode(int value);

void connecttreenodes(binarytreenode* pparent, binarytreenode* pleft, binarytreenode* pright);

void printtreenode(binarytreenode* pnode);

void printtree(binarytreenode* proot);

void destroytree(binarytreenode* proot);

原始檔:binarytree.cpp

#include "binarytree.h"

binarytreenode* createbinarytreenode(int value)

void connecttreenodes(binarytreenode* pparent, binarytreenode* pleft, binarytreenode* pright)

}void printtreenode(binarytreenode* pnode)

else

printf("\n");

}void printtree(binarytreenode* proot)

}void destroytree(binarytreenode* proot)

}

主函式:main.cpp

#include "binarytree.h"

#include void printfromtoptobottom(binarytreenode* proot)

}// ********************測試**********************

void test(char* testname, binarytreenode* proot)

// 10

// / \

// 6 14

// /\ /\

// 4 8 12 16

void test1()

// 5

// /

// 4

// /

// 3

// /

// 2

// /

// 1

void test2()

// 1

// \

// 2

// \

// 3

// \

// 4

// \

// 5

void test3()

// 樹中只有1個結點

void test4()

// 樹中沒有結點

void test5()

int main()

面試題23 從上往下列印二叉樹

不管是廣度優先遍歷乙個有向圖還是一棵樹,都要用到佇列,第一步把起始結點 對樹而言是根結點 放入到佇列中,接下來每一次從佇列頭部提取出乙個結點,遍歷這個結點之後把從它能到達的結點 對樹而言是子結點 都依次放入到佇列,我們重複這個遍歷過程,直到佇列中的結點全部被遍歷為止 從上往下列印出二叉樹的每個結點,...

面試題27 從上往下列印二叉樹

題目 從上往下列印出二叉樹的每個結點,同一層的結點按照從左往右的順序列印。邊界條件 root為空 思路 這其實是廣度優先演算法,要用到佇列。首先將root結點入佇列。當佇列不為空時,下面一直迴圈。取佇列front的乙個結點,輸出其value,出佇列。將上一步取出的結點左結點入佇列,然後右結點入佇列。...

面試題32 從上往下列印二叉樹

題目 從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。include include include include include include using namespace std struct binarytreenode void printfromtoptobott...