package ShuZhuangTianPing;
import java.util.Scanner;
public class ShuZhuangTianPing {
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
Node2 tree = new Node2(0,0);
while (scanner.hasNextInt()) {
creatTree(tree);
}
if (getWeight(tree.getLeft(),tree.getRight()) > 0) {
System.out.println("yes");
}
}
private static int getWeight(Node2 nl,Node2 nr) {
if (nl.getWeight() == 0) {
nl.setWeight(getWeight(nl.getLeft(), nr.getRight()));
}
if (nr.getWeight() == 0) {
nr.setWeight(getWeight(nl.getLeft(), nr.getRight()));
}
if (nl.getWeight() * nl.getDistance() == nr.getWeight() *nr.getDistance()) {
return nl.getWeight() + nr.getWeight();
}else {
System.out.println("NO");
return 0;
}
}
private static void preOrder(Node2 tree) {
if (tree == null) {
return;
}
System.out.println(tree + ", ");
preOrder(tree.getLeft());
preOrder(tree.getRight());
}
private static void creatTree(Node2 parent) {
int wl = scanner.nextInt();
int dl = scanner.nextInt();
int wr = scanner.nextInt();
int dr = scanner.nextInt();
Node2 n1 = new Node2(wl, dl);
Node2 nr = new Node2(wr, dr);
parent.setLeft(n1);
parent.setRight(nr);
if (wl == 0) {
creatTree(n1);
}
if (wr == 0) {
creatTree(nr);
}
}
}
class Node2{
private int weight;
private int distance;
private Node2 left;
private Node2 right;
public Node2(int weight, int distance) {
this.weight = weight;
this.distance = distance;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public int getDistance() {
return distance;
}
public void setDistance(int distance) {
this.distance = distance;
}
public Node2 getLeft() {
return left;
}
public void setLeft(Node2 left) {
this.left = left;
}
public Node2 getRight() {
return right;
}
public void setRight(Node2 right) {
this.right = right;
}
//重写tostring()方法
@Override
public String toString() {
return String.format("%d-%d", weight, distance);
}
}
java数据结构与算法之树状天平
最新推荐文章于 2024-04-19 17:24:39 发布
本文介绍了一种基于装饰天平的算法实现,通过构建二叉树结构并利用递归算法来判断装饰天平是否平衡。文章详细解释了节点类Node2的定义,包括权重、距离属性及左右子节点,同时阐述了主函数中读取输入创建树的过程,以及如何通过getWeight函数比较左右子树的平衡状态。
1807

被折叠的 条评论
为什么被折叠?



