package com.liangzy.coding.ali;
import lombok.Getter;
import lombok.Setter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import java.util.concurrent.atomic.AtomicInteger;
public class Tree {
private AtomicInteger count = new AtomicInteger(0);
private Node HEAD = null;
private Node TAIL = null;
@Getter
@Setter
public static class Node {
private Node leftNode;
private Node rightNode;
private Integer data;
public Node(Integer data) {
this.data = data;
}
}
public int count() {
return this.count.get();
}
public static void addLeft(Node root, Node left) {
root.setLeftNode(left);
}
public static void addRight(Node root, Node right) {
root.setRightNode(right);
}
public void bfsFind(Node root) {
Queue<Node> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
Node tempNode = queue.poll();
if (tempNode.getLeftNode() != null) {
queue.offer(tempNode.getLeftNode());
}
if (tempNode.getRightNode() != null) {
queue.offer(tempNode.getRightNode());
}
}
}
public void dfsFind(Node root) {
Stack<Node> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
Node tempNode = stack.pop();
System.out.println(tempNode.getData());
if (tempNode.getRightNode() != null) {
stack.push(tempNode.getRightNode());
} else if (tempNode.getLeftNode() != null) {
stack.push(tempNode.getLeftNode());
}
}
}
}