二叉树的结点添加,即为二叉树的建立
外部类为树,根节点,结点的个数
内部类(结点类,添加结点的方法(递归方法))
左节点,右结点,父节点
package binarytree;
public class BinaryTree {
private Node root;
private int count;
public class Node{
private int data;
private Node left;
private Node right;
private Node parent;
public Node() {
}
public Node(int data) {
this.data = data;
}
public boolean addNode(Node newNode){
if (newNode.datathis.data){
if(this.right==null){
this.right = newNode;
newNode.parent = this;
}else {
return this.right.addNode(newNode);
}
}else {
return false;
}
return true;
}
}
public boolean add(int data){
Node node = new Node(data);
//用来保存是否添加成功
boolean flag = false;
//判断二叉树是否为空
if(this.root==null){
this.root = node;
flag = true;
}else {
flag = this.root.addNode(node);
}
if(flag){
this.count++;
}
return flag;
}
}
package binarytree;
import org.omg.Messaging.SyncScopeHelper;
public class Test1 {
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
System.out.println(binaryTree.add(10));
System.out.println(binaryTree.add(11));
System.out.println(binaryTree.add(11));
}
}
2.判断结点是否包含某数据
package binarytree;
public class BinaryTree {
private Node root;
private int count;//添加结点的个数
public class Node{
private int data;
private Node left;
private Node right;
private Node parent;
public Node() {
}
public Node(int data) {
this.data = data;
}
public boolean addNode(Node newNode){
//省略
return true;
}
public boolean contiansNode(int data){
//从根节点开始
if(this.data==data){
return true;
}else if(data>this.data){
if(this.right!=null){
return this.right.contiansNode(data);
}
}else if(data
小结:无论是添加结点,还是判断是否包含。都是从根节点开始判断。然后通过this.root.方法名()调用方法
二叉树的遍历
package binarytree;
import org.omg.Messaging.SyncScopeHelper;
import javax.xml.bind.SchemaOutputResolver;
public class BinaryTree {
private Node root;
private int count;//添加结点的个数
public class Node{
private int data;
private Node left;
private Node right;
private Node parent;
public Node() {
}
public Node(int data) {
this.data = data;
}
public boolean addNode(Node newNode){
if (newNode.datathis.data){
if(this.right==null){
this.right = newNode;
newNode.parent = this;
}else {
return this.right.addNode(newNode);
}
}else {
return false;
}
return true;
}
public boolean contiansNode(int data){
//从根节点开始
if(this.data==data){
return true;
}else if(data>this.data){
if(this.right!=null){
return this.right.contiansNode(data);
}
}else if(data
package binarytree;
public class Test1 {
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
binaryTree.add(23);
binaryTree.add(32);
binaryTree.add(10);
binaryTree.add(9);
binaryTree.add(78);
binaryTree.add(15);
binaryTree.add(90);
binaryTree.add(85);
binaryTree.add(100);
System.out.print("先序遍历结果为:");
binaryTree.transingFirst();
System.out.println();
System.out.print("中序遍历结果为:");
binaryTree.transingMiddle();
System.out.println();
System.out.print("后遍历结果为:");
binaryTree.transingLast();
}
}



