LeetCode 노트:404.Sum of Left Leaves
2605 단어 LeetCode
질문:
Find the sum of all left leaves in a given binary tree.
Example:
3
/ \
9 20
/ \
15 7
There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.
대의:
두 갈래 나무의 모든 왼쪽 잎 노드의 합을 계산하다
예:
3
/ \
9 20
/ \
15 7
이 두 갈래 나무 중에는 두 개의 왼쪽 잎 노드가 있는데, 각각 9와 15이다.그래서 24로 돌아왔습니다.
생각:
사고방식에 있어서도 특별한 점은 없다. 바로 판단을 하고 세심하게 빈틈이 없으면 된다.대체적으로 왼쪽 노드가 있는지, 오른쪽 노드가 있는지 판단하는 것으로 나뉜다.왼쪽 노드가 있으면 왼쪽 노드에 하위 노드가 있는지 확인하고, 없으면 (즉 왼쪽 잎 노드) 값을 직접 추가하고, 있으면 왼쪽 노드에 계속 귀속한다.오른쪽 노드가 있고 오른쪽 노드에 하위 노드가 있으면 오른쪽 노드에 귀속됩니다. 그렇지 않으면 오른쪽 노드가 없든 오른쪽 노드가 없든 하위 노드(즉 오른쪽 잎 노드)는 플러스 0으로 간주됩니다.주의해야 할 것은 자체 노드가 자신이null이면 0으로 되돌아가야 한다는 것이다.또한 뿌리 노드 자신만 있으면 0으로 돌아가야 한다. 제목이 왼쪽 잎 노드를 말하므로 뿌리 노드는 계산하지 않는다.마지막으로 주의해야 할 것은 모든 노드의 하위 노드나 값을 판단하기 전에 이 노드 자체가null인지 아닌지를 판단하는 것이다. 그렇지 않으면 오류가 있을 것이다.
코드(Java):
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
public class Solution {
public int sumOfLeftLeaves(TreeNode root) {
if (root == null) return 0;
else if (root.left == null && root.right == null) return 0;
else {
return ((root.left != null && root.left.left == null && root.left.right == null) ? root.left.val : sumOfLeftLeaves(root.left)) + ((root.right != null && (root.right.left != null || root.right.right != null)) ? sumOfLeftLeaves(root.right) : 0);
}
}
}
저작권 소유:http://blog.csdn.net/cloudox_
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.