class Solution {
public:
void search(TreeNode
*t
, vector
<string
> &ans
, string s
)
{
if (t
== NULL) return;
s
+= to_string(t
->val
);
if (t
->left
== NULL && t
->right
== NULL)
{
ans
.push_back(s
);
return;
}
if (t
->left
!= NULL)
{
s
+= "->";
search(t
->left
, ans
, s
);
while (s
[s
.size() - 1] != '>')
{
s
.pop_back();
}
s
.pop_back();
s
.pop_back();
}
if (t
->right
!= NULL)
{
s
+= "->";
search(t
->right
, ans
, s
);
while (s
[s
.size() - 1] != '>')
{
s
.pop_back();
}
s
.pop_back();
s
.pop_back();
}
}
vector
<string
> binaryTreePaths(TreeNode
* root
) {
vector
<string
> ans
;
string s
;
search(root
, ans
, s
);
return ans
;
}
};
昨天刚学了一点树的知识今天就用到了嘿嘿 原来前中后序遍历只是dfs的三种不同策略_(:з」∠)_ 需要注意的地方: 1、vector需要穿地址给函数,string不用 2、int转string可以用to_string函数,string转int才能 - ‘0’ 3、搜左边和右边的时候写的有点啰嗦了,但是还蛮快的_(:з」∠)_
转载请注明原文地址:https://tech.qufami.com/read-21209.html