Lintcode: 두 갈래 트리의 모든 경로
2699 단어 Lintcode
질문:
두 갈래 나무를 주어 뿌리 노드에서 잎 노드까지의 모든 경로를 찾아라.
예:
예제 1:
:{1,2,3,#,5}
:["1->2->5","1->3"]
:
1
/ \
2 3
\
5
예제 2:
:{1,2}
:["1->2"]
:
1
/
2
python:
"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
"""
class Solution:
"""
@param root: the root of the binary tree
@return: all root-to-leaf paths
"""
def findLastNode(self, root, path, result):
if root == None:
return None
path += str(root.val)
if root.left == None and root.right == None:
result.append(path)
else:
path += "->"
if root.left != None:
self.findLastNode(root.left, path, result)
if root.right != None:
self.findLastNode(root.right, path, result)
def binaryTreePaths(self, root):
# write your code here
if root == None:
return []
path = ""
result = []
self.findLastNode(root, path, result)
return result
C++:
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: the root of the binary tree
* @return: all root-to-leaf paths
*/
void findLastNode(TreeNode *root, string path, vector &result)
{
if(root == NULL)
{
return;
}
path += to_string(root->val);
if(root->left == NULL && root->right == NULL)
{
result.push_back(path);
}else{
path += "->";
if(root->left != NULL)
{
findLastNode(root->left, path, result);
}
if(root->right != NULL)
{
findLastNode(root->right, path, result);
}
}
}
vector binaryTreePaths(TreeNode * root) {
// write your code here
if(root == NULL)
{
return vector();
}
string path = "";
vector result;
findLastNode(root, path, result);
return result;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Lintcode 68 두 갈래 나무의 뒷순서설명: 두 갈래 나무를 보여 줍니다. 노드 값의 뒷순서를 되돌려줍니다.예: 두 갈래 나무 {1,#,2,3} 한 그루를 제시하고 [3,2,1] 도전으로 돌아갑니다. 당신은 비귀속을 사용할 수 있습니까?코드:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.