我用java代码帮你模拟了一下往二叉树里面插入数据的过程,希望对你有帮助
我插入的原则是左边小数,右边大数。- package cn.ywl.staticdemo;
- class Node{
-
- private int value ; //节点的值
- private Node left = null; //用于记住该节点的左孩子
- private Node right = null; //用于记住该节点的右孩子
- public int getValue() {
- return value;
- }
- public void setValue(int value) {
- this.value = value;
- }
- public Node getLeft() {
- return left;
- }
- public void setLeft(Node left) {
- this.left = left;
- }
- public Node getRight() {
- return right;
- }
- public void setRight(Node right) {
- this.right = right;
- }
-
- public static boolean insert(Node node,int value){
-
- if(node == null){ //如果节点为空,插入失败
- return false;
-
- }else{
- //大数放在右边,小数放在左边
- if(node.getValue()>value){ //如果value小于节点的值.....
-
- if(node.getLeft()==null){ //如果该节点没有左孩子,把该值作为该节点的右孩子
-
- addLeftNode(value, node);
- return true;
-
- }else{ //如果该节点没有左孩子,进入递归调用
- insert(node.getLeft(),value);
- }
-
- }else{ //如果value小于节点的值.....
-
- if(node.getRight()==null){ //如果该节点没有右孩子,把该值作为该节点的右孩子
-
- addRightNode(value, node);
- return true;
-
- }else{
- insert(node.getLeft(),value);//如果该节点没有右孩子,进入递归调用
- }
- }
- }
- return false;
-
-
- }
-
- public static void addLeftNode(int value,Node node){
- Node left = new Node();
- left.setValue(value);
- node.setLeft(left);
- }
- public static void addRightNode(int value,Node node){
- Node right = new Node();
- right.setValue(value);
- node.setRight(right);
- }
- }
- public class TwoTreeDemo {
- public static void main(String[] args) {
- Node mynode = new Node();
- mynode.setValue(10);
-
- if(Node.insert(mynode, 5)){
-
- Node.insert(mynode, 6);
- Node.insert(mynode, 3);
- System.out.println(mynode.getLeft().getLeft().getValue());
- System.out.println(mynode.getLeft().getRight().getValue());
- }
-
- }
- }
复制代码 |