方法一:先分別建立節點,再根據連線關係連線各節點
方法二:輸入為vector, 遞迴實現建立,通過int型陣列(層序)建立二叉樹,用-1表示空節點。
使用佇列的先進先出特性,以層序方式輸出列印二叉樹
具體的**實現寫在了標頭檔案中,如下:
// created by zzh on 2020/4/26.
#ifndef sword_to_offer_binarytree_h
#define sword_to_offer_binarytree_h
#include #include #include using namespace std;
struct treenode
};///建立二叉樹的三種方法/
//1.先建立節點,然後連線各節點
treenode* createtreenode(int val)
void connecttreenode(treenode* root,treenode* left, treenode* right)
//2. 可通過int型陣列(層序)建立二叉樹,用-1表示空節點
void createtreecore(treenode* &root, const vector&vec, int len, int index)
treenode* createtree(const vector&vec)
///以層序方式輸出列印二叉樹 使用佇列//
void printtree(treenode* root)
else
int cur_level = 1, next_level = 0;//記錄每行有多少個節點,用於換行
while(!tmp.empty())
else
cur_level--;
if(cur_level==0)
}}#endif //sword_to_offer_binarytree_h
分行從上往下列印二叉樹
從上到下按層列印二叉樹,同一層的結點按從左到右的順序列印,每一層列印到一行。樣例 輸入如下圖所示二叉樹 8,12,2,null,null,6,null,4,null,null,null 8 12 2 6 4輸出 8 12,2 6 4 時間複雜度o n class solution q.offer r...
根據兩種二叉樹遍歷方式,求二叉樹方法
如何根據已知兩種遍歷的序列,求原始的二叉樹?並不是已知道任意兩個序列都可以還原二叉樹,只有知道先序中序以及中序和後序兩種型別的遍歷順序才能還原二叉樹。只知道先序和後序是還原不了原始的二叉樹的。1 已知道先序和中序遍歷,還原二叉樹。已知道二叉樹的先序遍歷為abcdefgh,中序遍歷為bdceafhg,...
不分行從上往下列印二叉樹
從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。樣例輸入如下圖所示二叉樹 8,12,2,null,null,6,null,4,null,null,null 8 12 2 6 4輸出 8,12,2,6,4 就是寬度優先遍歷,如果該節點是left得想辦法遍歷完了他之後去找他的右兄弟 ...