題目描述:
給一棵二叉樹,找出從根節點到葉子節點的所有路徑。
樣例:給出下面這棵二叉樹:
1
/ \
2 3
\ 5
所有根到葉子的路徑為:
[
"1->2->5",
"1->3"
]
做題思路:
題目要求在輸出時,陣列中輸出的是一串路徑,所以,在類內呼叫已寫的遞迴函式,對遞迴函式進行編寫:定義樹的結點、陣列物件和字串。如果左子樹和右子樹都為空,則把根節點的值放入陣列中輸出,如果左子樹的值不為空,則呼叫函式,把路徑的結點值放入字串中輸出,如果右子樹的值不為空,則呼叫函式,把路徑的結點值放入字串中輸出,放入陣列中,遍歷完樹之後,跳出遞迴。
關鍵**:
class solution
void binarytree(treenode *root,vector&ve,string s)
if(root->left!=null)
binarytree(root->left,ve,s+"->"+to_string(root->left->val));
if(root->right!=null)
binarytree(root->right,ve,s+"->"+to_string(root->right->val));
}};
做題感想:其實剛開始這題並不太會,因為想用給定的這個函式直接編寫遞迴,發現該函式中只有定義了乙個結點,上網搜了很多答案都不懂,後來才看到乙個類內編寫了乙個遞迴函式,把遍歷完的路徑轉化成字串儲存進陣列中,在該函式中呼叫遞迴函式。
LintCode 二叉樹的所有路徑
二叉樹的所有路徑 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。樣例 給出下面這棵二叉樹 1 2 3 5 所有根到葉子的路徑為 1 2 5 1 3 definition of treenode public class treenode public class solution public v...
LintCode 二叉樹的所有路徑
1.描述 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。哪家公司問你的這個題?樣例 給出下面這棵二叉樹 1 2 3 5所有根到葉子的路徑為 1 2 5 1 3 2.分析 首先需要找到葉子節點,從根節點到任乙個葉子節點中間的路徑都是乙個string,當遍歷到當前節點不是 葉子節點時,把當前節點加入s...
Lintcode 二叉樹的所有路徑
給一棵二叉樹,找出從根節點到葉子節點的所有路徑。yes樣例給出下面這棵二叉樹 1 2 3 5所有根到葉子的路徑為 1 2 5 1 3 思路 一般二叉樹的問題用遞迴解決比較簡潔。這裡其實是先序遍歷 在庫檔案string中,to string int value 是把乙個整數轉換為字串 兩個字串使用 連...