250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(Leet Code c++)Binary Tree Paths 본문
728x90
반응형
257. Binary Tree Paths
Easy
2876145Add to ListShare
Given the root of a binary tree, return all root-to-leaf paths in any order.
A leaf is a node with no children.
Example 1:
Input: root = [1,2,3,null,5] Output: ["1->2->5","1->3"]
Example 2:
Input: root = [1] Output: ["1"]
Constraints:
- The number of nodes in the tree is in the range [1, 100].
- -100 <= Node.val <= 100
주어진 이진 트리의 리프 노드 경로를 모두 리턴해야 한다.
루트가 NULL인지 확인하여 dfs 실행.
dfs를 통해 들어온 현재 노드의 리프 노드인지 확인한다.
node->left와 node->right가 모두 NULL 인 경우 리프 노드이기 때문에
(현재까지의 노드 경로) + (현재 노드의 번호)를 리턴한다.
리프노드가 아닌 경우,
왼쪽 자식 또는 오른쪽 자식을 방문해 리프 노드일 때까지 dfs를 실행한다.
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
vector<string> answer;
void dfs(TreeNode * node, string current){
string s = to_string(node->val);
if(node->left == NULL && node->right == NULL){
answer.push_back(current + s);
return;
}
if(node->left != NULL){
dfs(node->left, current + s + "->");
}
if(node->right != NULL){
dfs(node->right, current + s + "->");
}
return;
}
vector<string> binaryTreePaths(TreeNode* root) {
if(root != NULL){
dfs(root, "");
}
return answer;
}
};
728x90
반응형
'Leet Code 알고리즘' 카테고리의 다른 글
(Leet Code c++)Ugly Number (0) | 2021.07.29 |
---|---|
(Leet Code c++)Add Digits (0) | 2021.07.29 |
(Leet Code c++)Valid Anagram (0) | 2021.07.28 |
(Leet Code c++)Delete Node in a Linked List (0) | 2021.07.28 |
(Leet Code c++)Lowest Common Ancestor of a Binary Search Tree (0) | 2021.07.28 |