package com.coding.basic; /** * */ public class BinaryTree { private Node root; public boolean insert(int data) { Node newNode = new Node(data); if (root == null) { root = newNode; return true; } return add(data); //return add(root,new Node(data)); } private boolean add(Node currentNode,Node newNode) { if (currentNode.data == newNode.data) { return false; } if (currentNode.data < newNode.data) { if (currentNode.right == null) { currentNode.right = newNode; return true; } else { return add(currentNode.right, newNode); } } if (currentNode.left == null) { currentNode.left = newNode; return true; } else { return add(currentNode.left, newNode); } } private boolean add(int data) { Node newNode = new Node(data); boolean result = false; Node cursorNode = root; Node parentNode = null; while (true) { parentNode = cursorNode; if (cursorNode.data == data) { break; } if (cursorNode.data < data) { cursorNode = cursorNode.right; if (cursorNode == null) { parentNode.right = newNode; result = true; break; } } else { cursorNode = cursorNode.left; if (cursorNode == null) { parentNode.left = newNode; result = true; break; } } } return result; } private static class Node { int data; Node left, right; public Node(int data) { this.data = data; this.left = null; this.right = null; } } public static void main(String[] args) { BinaryTree binaryTree = new BinaryTree(); binaryTree.insert(5); binaryTree.insert(6); binaryTree.insert(4); binaryTree.insert(8); binaryTree.insert(7); binaryTree.insert(3); System.out.println("finsh"); } }