Leetcode 257. Binary Tree Paths | | Leetcode 257. Binary Tree Paths 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. Description 2. Solution Recursive 123456789101112131415161718192021222324252627282930313233343536373839/** * 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> result; if(root == NULL) { return result; } searchPath(root, "", result); return result; } void searchPath(TreeNode* root, string s, vector<string>& result) { if(s == "") { s = to_string(root->val); } else { s = s + "->" + to_string(root->val); } if(root->left == NULL && root->right == NULL) { result.push_back(s); return; } if(root->left != NULL) { searchPath(root->left, s, result); } if(root->right != NULL) { searchPath(root->right, s, result); } }}; Iterative 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647/** * 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> result; if(root == NULL) { return result; } queue<TreeNode*> nodes; queue<string> paths; nodes.push(root); paths.push(""); while(!nodes.empty()) { TreeNode* node = nodes.front(); nodes.pop(); string path = paths.front(); paths.pop(); if(path == "") { path = to_string(node->val); } else { path = path + "->" + to_string(node->val); } if(node->left == NULL && node->right == NULL) { result.push_back(path); continue; } if(node->left != NULL) { nodes.push(node->left); paths.push(path); } if(node->right != NULL) { nodes.push(node->right); paths.push(path); } } return result; }}; Reference https://leetcode.com/problems/binary-tree-paths/description/ 如果有收获,可以请我喝杯咖啡! 赏 微信打赏 支付宝打赏