还是递归遍历,当左边不为空遍历左边,右边不为空遍历右边,然后将一条路径赋值给string,当叶子节点出现时(即root->left==null&&root->right=null)将string加入容器,
代码
class Solution { public: vector<string> binaryTreePaths(TreeNode* root) { vector<string> res; if(root == nullptr) return res; string restemp = to_string(root->val); depth_search(root, res, restemp); return res; } void depth_search(TreeNode *root, vector<string> &res, string restemp){ if(root->left == NULL && root->right == NULL) res.push_back(restemp); if(root->left!=NULL) depth_search(root->left, res, restemp + "->" + to_string(root->left->val)); if(root->right!=NULL) depth_search(root->right, res, restemp + "->" + to_string(root->right->val)); } };
原文:https://www.cnblogs.com/biubiuWham/p/10397215.html