劍指offer 32 從上往下列印二叉樹

2021-09-02 17:25:35 字數 1218 閱讀 6784

這道題題目可以描述為:從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。

typedef int  datatype;

typedef struct bstreenode bstreenode;

bstreenode *createnode(int data)

本題的思路為:定義乙個佇列,每一次列印乙個結點的時候,如果該結點有子結點,則把該結點的子結點放到乙個佇列的末尾。接下來到佇列的頭部取出最早進入佇列的結點,重複前面的列印操作,直到佇列中所有的結點都被列印出來為止。

有關佇列結構體以及介面定義如下:

struct  bstreenode;

typedef struct bstreenode * qdatatype;

typedef struct qnodeqnode;

typedef struct queuequeue;

void queueinit(queue *pq)

void queuedestory(queue *pq)

pq->front = pq->rear = null;

}//插入

void queuepush(queue *pq, qdatatype data)

pq->rear->next = node;

pq->rear = node;

}//刪除

void queuepop(queue *pq)

else }

//返回隊首元素

qdatatype queuefront(const queue *pq)

int queueempty(const queue *pq)

int queuesize(queue *pq)

操作如下圖:

**如下:

void  printtree(bstreenode *root)

queue que;

queueinit(&que);

queuepush(&que, root);

while (!queueempty(&que))

if (root->right)}}

(劍指Offer)32 從上往下列印二叉樹

題目描述 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。遞迴的版本 這個遞迴的版本很有意思的地方在於他建立了乙個深度的函式用來判斷樹的深度,然後根據深度決定root向下偏移幾次。public void printfromtoptobottom treenode root for int i ...

劍指Offer Python 從上往下列印二叉樹

題目 從上往下列印二叉樹 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。coding utf 8 class treenode def init self,x self.val x self.left none self.right none class solution 返回從上到下每個節...

劍指offer第32 從上往下列印二叉樹

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。coding utf 8 classtreenode def init self x self.val x self.left noneself.right noneclasssolution 返回從上到下每個節點值列表,例 1,2,3 defp...