두 갈래 나무의 거울을 구하다
사고방식: 원래의 두 갈래 나무를 파괴하고 원래의 두 갈래 나무를 파괴하지 않으며, 새로운 두 갈래 나무를 새로 만든다.
귀속: 원래의 두 갈래 나무 파괴
public static TreeNode mirror(TreeNode root){
if(root == null)
return null;
TreeNode left = mirror(root.left);
TreeNode right = mirror(root.right);
root.left = right;
root.right = left;
return root; //
}
귀속: 원래의 두 갈래 나무를 파괴하지 않는다
public static TreeNode newMirror(TreeNode root){
if(root == null)
return null;
TreeNode node = new TreeNode(root.val);
node.left = newMirror(root.right);
node.right = newMirror(root.left);
return node;
}
교체: 원래의 두 갈래 나무를 파괴하다
public static void mirrorDestroy(TreeNode root){
if(root == null)
return;
Stack stack = new Stack();
stack.push(root);
while(!stack.isEmpty()){
TreeNode cur = stack.pop();
TreeNode tmp = cur.right;
cur.right = cur.left;
cur.left = tmp;
if(cur.left != null){
stack.push(cur.left);
}
if(cur.right != null){
stack.push(cur.right);
}
}
}
교체: 원래의 두 갈래 나무를 파괴하지 않는다
public static TreeNode mirrorUndestory(TreeNode root){
if(root == null)
return null;
Stack stack = new Stack();
Stack newStack = new Stack();
stack.push(root);
TreeNode newRoot = new TreeNode(root.val);
newStack.push(newRoot);
while(!stack.isEmpty()){
TreeNode cur = stack.pop();
TreeNode newCur = newStack.pop();
if(cur.right != null){
stack.push(cur.right);
newCur.left = new TreeNode(cur.right.val);
newStack.push(newCur.left);
}
if(cur.left != null){
stack.push(cur.left);
newCur.right = new TreeNode(cur.left.val);
newStack.push(newCur.right);
}
}
return newRoot;
}
다음으로 전송:https://www.cnblogs.com/lfdingye/p/7365999.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.