描述
給乙個二叉樹,列印其所有路徑
利用後序非遞迴遍歷,因為後序非遞迴遍歷的特性,對於每次訪問的節點,棧裡面存的元素都是當前節點的祖先,所以只要判斷當前節點是不是葉子節點,如果是葉子節點,那麼將棧中元素取出,和當前葉子節點組成一條路徑。
#include
using
namespace std;
struct node
node()
};node*
build()
return root;
}void
visit
(node* p)
void
postvis
(node* root)
}void
postordervis
(node* root)
else
else
visit
(now.first);}
}}cout << endl;
for(
int i =
0; i <
(int
)a.size()
;++i)
cout << endl;}}
void
solve()
intmain()
/*abdg###e#h##cf###
*//* 樹的結構
a/ \
b c
/ \ /
d e f
/ \
g h
*/
每日一題 列印沙漏
本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先從大到小順序遞減到1,再從小到大順序遞增 首尾符號數相等。給定任意n個符號,不一定能正好組成乙個沙漏。要求列印出的沙漏能用掉盡可能...
每日一題 32 二叉樹的後序遍歷
給定乙個二叉樹,返回它的 後序 遍歷。示例 輸入 1,null,2,3 1 2 3 輸出 3,2,1 高階 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?遞迴演算法 解答 definition for a binary tree node.struct treenode class solution...
二叉樹三種遍歷非遞迴實現 每日一題
前序遍歷 根據前序遍歷訪問的順序,優先訪問根結點,然後再分別訪問左孩子和右孩子。即對於任一結點,其可看做是根結點,因此可以直接訪問,訪問完之後,若其左孩子不為空,按相同規則訪問它的左子樹 當訪問其左子樹時,再訪問它的右子樹。因此其處理過程如下 對於任一結點p 1 訪問結點p,並將結點p入棧 2 判斷...