두 갈래 트리 테마: 거울 뒤집기, 대칭, 훑어보기, 모든 경로
class TreeNode { //
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public TreeNode invertTree(TreeNode root) { //
if (root==null) return null;
//if (root.left==null &&root.right==null) return null;
TreeNode temp=root.left;
root.left=root.right;
root.right=temp;
invertTree(root.left);
invertTree(root.right);
return root;
}
public TreeNode invertTree2(TreeNode root) { //
if (root==null) return null;
Queue queue=new ArrayDeque<>();
queue.add(root);
while (queue.size()!=0){
TreeNode treeNode=queue.remove();
TreeNode temp=treeNode.left;
treeNode.left=treeNode.right;
treeNode.right=temp;
if (treeNode.left!=null) queue.add(treeNode.left);
if (treeNode.right!=null) queue.add(treeNode.right);
}
return root;
}
101. 대칭 두 갈래 나무
두 갈래 나무를 정해서 거울이 대칭적인지 확인하세요.
class Solution {
public boolean isSymmetric(TreeNode root) { //
if (root==null) return true;
return compare(root.left,root.right);
}
private boolean compare(TreeNode left,TreeNode right){
if (left==null&&right==null) return true; //
else if (left==null || right==null) return false; //
else if (right.val!=left.val) return false; //
else return compare(left.left,right.right)&&compare(left.right,right.left); //
}
}
257. 두 갈래 나무의 모든 경로
두 갈래 나무를 정해서 뿌리 노드에서 잎 노드까지의 모든 경로를 되돌려줍니다.
class Solution {
List list= new ArrayList<>();
public List binaryTreePaths(TreeNode root) { //
if (root!=null) temp(root,new String());
return list;
}
private void temp(TreeNode root,String s){ // StringBuilder ,
if(root.right==null &&root.left==null){
list.add(s+root.val);
return ;
}
if (root.left!=null)temp(root.left,s+root.val+"->");
if (root.right!=null)temp(root.right,s+root.val+"->");
}
}
144. 두 갈래 나무의 앞길이 두루 다니다
두 갈래 나무를 정해서 앞뒤로 돌아갑니다.
class Solution {
public List preorderTraversal(TreeNode root) { // , --
List list= new ArrayList<>();
if (root==null) return list;
Deque queue =new ArrayDeque<>();
queue.push(root);
while (queue.size()>0){ // queue.size()>0
TreeNode node=queue.pop();
list.add(node.val);
if (node.right!=null)queue.push(node.right);
if (node.left!=null)queue.push(node.left);
}
return list;
}
}
/////////// //////////
class Solution {
List list1= new ArrayList<>();
public List preorderTraversal(TreeNode root) {
if (root!=null) temp1(root);
return list1;
}
private void temp1(TreeNode root){
if (root==null) return;
list1.add(root.val);
temp1(root.left);
temp1(root.right);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.