列印Leetcode二叉樹

2021-10-03 03:03:47 字數 1766 閱讀 5251

介紹

這個**能夠列印leetcode中以字串形式顯示的二叉樹,方便以直觀的形式檢視樹的結構

**

#include

#include

#include

#include

using

namespace std;

/* * 此類用於將leetcode中string形式輸出的二叉樹例項化為樹結構

* 可進行如下string 形式的構造[1, 2, 3, 4, 5] 完全二叉樹

* [1,null,2,null,3,null,4,null] 單枝樹

*/struct treenode };

class

bintree

;void

freenode

(treenode *root)

; vector<

int>

extractintarray

(string str)

return intlist;

}void

setbintreebyint

(vector<

int>

&list)

else

q.push

(pnewnode);}

if(i %2==

0)q.

pop();

}}; vector<

int>

flattenbintree()

else

q.pop();

}// erase back null

while

(flatintlist.

back()

== nullvar)

return flatintlist;

} vector

convertstrlist

(vector<

int>

& flatintlist)

return flatstrlist;

}int

treeheight

(treenode *root)

void

writeroottoboard

(treenode *root,

int height,

int left,

int right, vector>

&board)

vector>

writetreetoboard

(treenode* root, vector>

&board)

public

:bintree()

:root

(null);

bintree

(string str)

:root

(null);

~bintree()

;void

freebintree()

void

setbintree

(string str)

string flatbintreetostr()

void

printtreetoscreen()

cout <<

"\n\n";}

return;}

treenode *

gettree()

};intmain()

二叉樹列印

舉例 1.初始化時,last 1,把1放入佇列 2.將1出隊,把1的子孩子2,3放入佇列,更新nlast 3 3.nlast更新完之後,列印上一次出隊的1,並和last比較,如果相同就列印換行,並更新last nlast 3 4.將2出隊,把2的子孩子4放入佇列,更新nlast 4 5,nlast更...

二叉樹列印

給定一顆二叉樹的頭節點head,請按照現在大家看到的這種格式列印 要求列印成 12 主要解決的問題是 如何換行 last 表示正在列印的當前行的最右節點 從左至右遍歷,如果遍歷到last節點,說明該換行了,換行之後,只需要nlast last,繼續下一行的列印過程,一直重複,直到所有的節點都列印完。...

列印二叉樹

之前在了解二叉樹旋轉的時候,為了方便檢視中間狀態,就寫了個以樹狀形式列印二叉樹的函式。起初是使用二叉樹中序遍歷的結果展開的方式,簡單但列印出來的樹有一定的傾斜。例如這棵樹 5 3 7 2 6 8它的中序遍歷結果為 2 3 5 6 7 8 列印出來的結果中,節點 3 和節點 7 不是對稱的。因為節點 ...