完全二叉樹指向同一層的相鄰結點

2021-06-18 10:49:31 字數 1099 閱讀 9171

題目:對於一顆完全二叉樹,要求給所有節點加上乙個pnext指標,指向同一層的相鄰節點;如果當前節點已經是該層的最後乙個節點,則將pnext指標指向null;給出程式實現,並分析時間複雜度和空間複雜度。

答:時間複雜度為o(n),空間複雜度為o(1)。

#include "

stdafx.h

"#include

#include

#include

using

namespace

std;

struct

treenode ;//

假定所建立的二叉樹如下圖所示/*1

/ \

2 3

/ \ / \

4 5 6 7

/ \ / \ / \

8 9 10 11 12 13

*/void createbitree(treenode *&pnode, fstream &fin)

else}//

完全二叉樹指向同一層的相鄰結點

void solution(treenode *phead)

vector

vec;

vec.push_back(phead);

treenode *pre =null;

treenode *pnode =null;

int cur = 0

;

int last = 0

;

while(cur

else

if (null != vec[cur]->m_pleft)

if (null != vec[cur]->m_pright)

pre =vec[cur];

cur++;

}pre->pnext =null;

pre =null;

}}int _tmain(int argc, _tchar*argv)

cout

<

phead = phead->m_pleft;

}cout

<

return0;

}

完全二叉樹結點數

222.完全二叉樹的節點個數 給你一棵完全二叉樹的根節點 root 求出該樹的節點個數。完全二叉樹的定義如下 在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1 2h 個節點。示例 輸入 ro...

列印二叉樹某一層的節點

按層非遞迴遍歷二叉樹是一道常見的題目,程式設計之美上有乙個列印出二叉樹某一層的節點的問題,稍稍有意思。在程式設計之美上,提到了兩種解法 1 一種是遞迴解法 void translevel node root,int level 2 另一種則是利用佇列的非遞迴解法 如果只是簡單的按層遍歷的話,可以用乙...

按層列印二叉樹 每行列印一層

一,問題介紹 給定一棵二叉樹,按照層序遍歷的順序列印二叉樹。但是要求,每一行列印一層資料。二,演算法分析 借助二叉樹的層序遍歷來實現 使用佇列的先入先出性質保證列印的順序 二叉樹層序遍歷參考 層序列印參考 1 public void printtree binarynoderoot 21if cur...