1. 程式人生 > >LeetCode 257. 二叉樹的所有路徑(C++)

LeetCode 257. 二叉樹的所有路徑(C++)

題目:

給定一個二叉樹,返回所有從根節點到葉子節點的路徑。

說明: 葉子節點是指沒有子節點的節點。

示例:
這裡寫圖片描述

思路:

遞迴終止條件:到達葉子節點,即該節點的左右孩子均為空。
路徑的拼接:每個節點值 + -> + 左孩子的路徑/右孩子的路徑(左右均可能有多個路徑)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution { public: vector<string> binaryTreePaths(TreeNode* root) { vector<string> res; if(root == NULL) return res; if(root->left == NULL && root->right == NULL){ //root為葉子結點 res.push_back(to_string(root->val)); } vector
<string>
leftS = binaryTreePaths(root->left); for(int i = 0; i < leftS.size(); i ++) res.push_back(to_string(root->val) + "->" + leftS[i]); vector<string> rihgtS = binaryTreePaths(root->right); for(int i = 0; i < rihgtS.size(); i ++) res.push_back(to_string(root->val) + "->"
+ rihgtS[i]); return res; } };