思路:
首先我們需要逐層列印二叉樹,然後根據每一層的狀態判定是從左到右,還是從右到左。
首先問題的核心其實是從上到下,從左到右列印二叉樹,只不過後面題目多了兩個要求,所以我們2**的大體框架應該是基於從上到下列印二叉樹;
其次逐層列印二叉樹,實際上就是讓我們對每一層設定標誌位,然後根據標誌位去決定列印的情況;
最後之字形,其實還是根據標誌位去決定正序,還是逆序列印;
/*struct treenode
};*/
class
solution
; vectorint>
> pr;
vector<
int> currrow;
//儲存當前行資料
deque> treedeque;
//基礎框架,佇列決定了從上到下列印二叉樹
deque<
int> sign;
//標誌位佇列,當然也可以使用其他方法
treedeque.
push_back
(proot)
; sign.
push_back(1
);while
(!treedeque.
empty()
)if(temp-
>right !=
nullptr)if
(!sign.
empty()
&& i != sign.
front()
)//是否當層所有資料儲存完畢;}
else
//偶數層逆轉列印;}
}if(sign.
empty()
&&!currrow.
empty()
)//最後一層時,sign為空,所以單獨操作一下;}
else;}
}}return pr;}}
;
之字形列印二叉樹
請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。include include include binarytree.h using namespace std void bprint binarytre...
之字形列印二叉樹
請實現乙個函式按照之字形順序從上向下列印二叉樹。即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。樣例輸入如下圖所示二叉樹 8,12,2,null,null,6,4,null,null,null,null 8 12 2 6 4 輸出 8 2...
之字形列印二叉樹
題目描述 請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。class treenode def init self,x self.val x self.left none self.right none ...