您的位置:首页 > 其它

在一颗二叉树上插入节点

2016-09-02 17:29 127 查看
在一颗二叉树上插入节点,插入是建立在小于父节点,则插入到父节点左边,如果大于父节点,则插入到父节点右边。在插入树节点,需要判断树根是否为空,如果不为空,则需要当前节点指向树根和父节点指向当前节点。直到当前节点等于null,那么可以在父节点左边或者右边插入新节点,并且返回树根跳出循环。如果树根为空,直接把树根指向新创建的节点,实现过程如下所示:

package cn.edu.nwu.structs.tree;

/**
* @author jcm
* 插入树节点
*时间 2016年9月2日
*/
public class InsertBinaryTreeNode {
public static void main(String[] args) {
BinaryTreeNode root = null;
root = insertBinaryTNode(root,43);
root = insertBinaryTNode(root,87);
root = insertBinaryTNode(root,-43);
root = insertBinaryTNode(root,98);
show(root,1);
}
/**
* @author jcm
* 在一颗二叉树上插入节点,如果二叉树为空,就让树根指向新插入的节点
* @param root 树根
* @param data 数据
* @return 返回树根的节点
*/
public static BinaryTreeNode insertBinaryTNode(BinaryTreeNode root,int data){
//创建树节点
BinaryTreeNode newTNode = new BinaryTreeNode(data);
//如果树根是空的,就让树根指向新创建的树节点
if(root == null){
root = newTNode;
return root;
}else{
//建立当前树节点
BinaryTreeNode currentTNode = root;
while(true){
//让父节点指向当前节点
BinaryTreeNode parentTNode = currentTNode;
if(currentTNode.data > data){
currentTNode = currentTNode.leftTreeNode;
if(currentTNode == null){
parentTNode.leftTreeNode = newTNode;
return root;//跳出循环,并返回树根
}
}else{
currentTNode = currentTNode.rightTreeNode;
if(currentTNode == null){
parentTNode.rightTreeNode = newTNode;
return root;
}
}
}
}
}
//中序遍历,通过n控制层数
public static void show(BinaryTreeNode root,int n){
if(root == null){
return ;
}else{
show(root.leftTreeNode,n+1);
for (int i=0;i<n;i++){
System.out.print(" ");
}
System.out.println(root.data);
show(root.rightTreeNode,n+1);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树
相关文章推荐