//在二叉查找树中插入一个数据域为data的结点,新插入的结点一定是某个叶子节点
public TreeNode<Integer> insertNode(TreeNode<Integer> node, Integer data){
TreeNode<Integer> newNode = new TreeNode<Integer>(data,null,null);
TreeNode<Integer> tmpNode = node; //遍历节点
TreeNode<Integer> pnode = null; //记录当前节点的父节点
if(node == null){ //原树为空,新插入的记录为根节点
node = newNode;
return node;
}
while(tmpNode != null){
pnode = tmpNode;
if(tmpNode.getData() == data){ //树中存在相同关键字的结点,什么也不做
return node;
}else{
if(tmpNode.getData() > data){ //根节点>插入数据,插入到左子树中
tmpNode = tmpNode.getLchild();
}else{ //根节点<插入数据,插入到右子树中
tmpNode = tmpNode.getRchild();
}
}
}
if(pnode.getData() > data){
pnode.setLchild(newNode);
}else{
pnode.setRchild(newNode);
}
return node;
}
2. 二叉查找树的中序遍历: