Binary Tree Paths,binarytreepaths
該題採用深搜就可以做了(其實樹的很多問題用深搜的思路都可以解決的),從根節點開始記錄路徑上的每一個節點,每到一個葉子節點把路徑放入結果vector中就可以了。
/** * 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: string int2str(int src){ stringstream dst; dst << src; return dst.str(); } void execTraverl(TreeNode* root, vector<string> &result, string tmp){ if(root -> left == nullptr && root -> right == nullptr){ tmp += "->"; tmp += int2str(root -> val); result.push_back(tmp); return; } if(root -> left != nullptr){ string tmp1 = tmp; tmp1 += "->"; tmp1 += int2str(root -> val); execTraverl(root -> left, result, tmp1); } if(root -> right != nullptr){ string tmp2 = tmp; tmp2 += "->"; tmp2 += int2str(root -> val); execTraverl(root -> right, result, tmp2); } } vector<string> binaryTreePaths(TreeNode* root){ string tmp; vector<string> result; if(root == nullptr) return result; if(root -> left == nullptr && root -> right == nullptr){ tmp += int2str(root -> val); result.push_back(tmp); return result; } if(root -> left != nullptr){ string tmp1; tmp1 += int2str(root -> val); execTraverl(root -> left, result, tmp1); } if(root -> right != nullptr){ string tmp2; tmp2 += int2str(root -> val); execTraverl(root -> right, result, tmp2); } return result; }};
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。