이 진 트 리 반전 의 재 귀 와 비 재 귀 실현 (자바)
2018 단어 데이터 구조
이런 알고리즘 을 실현 하면 재 귀 와 비 재 귀 (스 택) 두 가지 사고 가 있 을 수 있다.
다음은 자바 코드 구현.
import java.util.Stack;
/**
* Created by Lee on 2017/11/11.
*/
//
class Node {
int value;
Node left;
Node right;
Node(int value) {
this.value = value;
}
@Override
public String toString() {
return "Node{" +
"value=" + value +
", left=" + left +
", right=" + right +
'}';
}
}
public class InvertBinaryTreeDemo {
public static void swap(Node root){
Node temp = root.left;
root.left = root.right;
root.right = temp;
}
//
public static Node invert(Node root){
if (root == null){
return null;
}
root.left = invert(root.left);
root.right = invert(root.right);
swap(root);
return root;
}
// ,
public static void invertByStack(Node root){
Stack stack = new Stack();
stack.push(root);
while (!stack.empty()){
Node node = stack.pop();
swap(node);
if (node.left != null){
stack.push(node.left);
}
if (node.right != null){
stack.push(node.right);
}
}
}
//
public static void main(String[] args) {
Node node0 = new Node(1);
Node node1 = new Node(2);
Node node2 = new Node(3);
Node node3 = new Node(4);
Node node4 = new Node(5);
Node node5 = new Node(6);
Node node6 = new Node(7);
node0.left = node1;
node0.right = node2;
node1.left = node3;
node1.right = node4;
node2.left = node5;
node2.right = node6;
//invertByStack(node0);
//invert(node0);
System.out.println(node0);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.