두 갈래 나무의 비교를 역귀적으로 실현하다
package com.alan.basic;
import com.alan.basic.Tree.Node;
/**
*
*
* @author alan
*
*/
class Tree {
Node root;
public Tree() {
root = null;
}
public static class Node {
int value;
Node left;
Node right;
public Node(int nvalue) {
value = nvalue;
left = null;
right = null;
}
}
public void insert(int data) {
root = insert(root, data);
}
private Node insert(Node node, int data) {
if (node == null) {
node = new Node(data);
} else {
if (data <= node.value) {
node.left = insert(node.left, data);
}
else {
node.right = insert(node.right, data);
}
}
return (node); // in any case, return the new pointer to the caller
}
public void buildTree(int[] data) {
for (int i = 0; i < data.length; i++) {
insert(data[i]);
}
}
}
public class TreeCompare {
public static void main(String[] args) {
Tree t1 = new Tree();
Tree t2 = new Tree();
int[] data1 = { 1, 2, 3 };
int[] data2 = { 1, 2, 3 };
t1.buildTree(data1);
t2.buildTree(data2);
System.out.print(compare(t1.root, t2.root));
}
/**
*
* @param tn1
* @param tn2
* @return
*/
private static boolean compare(Node tn1, Node tn2) {
if (tn1 == null || tn2 == null) {
if (tn1 == null && tn2 == null) {
return true;
} else {
return false;
}
}
if (tn1.value == tn2.value) {
return (compare(tn1.left, tn2.left) && compare(tn1.right, tn2.right));
}
return false;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.