你需要採用前序遍歷的方式,將乙個二叉樹轉換成乙個由括號和整數組成的字串。
空節點則用一對空括號 「()」 表示。而且你需要省略所有不影響字串與原始二叉樹之間的一對一對映關係的空括號對。
示例 1:
輸入: 二叉樹: [1,2,3,4]
1/ \
2 3
/
4
輸出: "1(2(4))(3)"
解釋: 原本將是「1(2(4)())(3())」,
在你省略所有不必要的空括號對之後,
它將是「1(2(4))(3)」。
示例 2:
輸入: 二叉樹: [1,2,3,null,4]
1/ \
2 3
\ 4
輸出: "1(2()(4))(3)"
解釋: 和第乙個示例相似,
除了我們不能省略第乙個對括號來中斷輸入和輸出之間的一對一對映關係。
思路分析:這顯然是乙個遞迴演算法,建立root字串 = root-val + root->left字串 + root->right字串(需要注意有些些需要刪除多餘的空格)
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
string tempres =
to_string
(t->val)
; string leftres =
"("+
tree2str
(t->left)
+")"
;//左子樹字串
string rightres =
"("+
tree2str
(t->right)
+")"
;//右子樹字串
二叉樹 二叉樹遍歷 根據先序建立二叉樹
題目描述 編乙個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立乙個二叉樹 以指標方式儲存 例如如下的先序遍歷字串 abc de g f 其中 表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結輸入 輸入包括1行字串,長度不超過100。輸出 可能有多組測試資...
建立二叉樹 後序建立二叉樹
由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...
leetcode 二叉樹 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...