向树中插入键
向二叉树中插入元素没有特别的规则,你可以在任何需要的地方插入节点。
插入节点时唯一需要注意的是,在二叉树中,每个节点最多只能有两个子节点。
因此,要将节点插入树中,
逐层遍历每个节点,检查它是否有左子节点和右子节点。
如果任何节点同时拥有左子节点和右子节点,则无法再插入另一个节点,因为二叉树中的节点最多只能有两个子节点,将这些值添加到队列中并继续。
如果任何节点没有左子节点或右子节点,则创建一个新节点并将其添加到那里。
简而言之,将节点插入到没有左子树或右子树或两者都没有的父节点。
示例
import java.util.LinkedList;
import java.util.Queue;
class Node{
int data;
Node leftNode, rightNode;
Node() {
leftNode = null;
rightNode = null;
this.data = data;
}
Node(int data) {
leftNode = null;
rightNode = null;
this.data = data;
}
int getData() {
return this.data;
}
Node getleftNode() {
return this.leftNode;
}
Node getRightNode() {
return this.leftNode;
}
void setData(int data) {
this.data = data;
}
void setleftNode(Node leftNode) {
this.leftNode = leftNode;
}
void setRightNode(Node rightNode) {
this.leftNode = rightNode;
}
}
public class InsertingElements {
public static int[] insertElement(int[] myArray, int pos, int data) {
int j = myArray.length;
int lastElement = myArray[j-1];
for(int i = (j-2); i >= (pos-1); i--) {
myArray[i+1] = myArray[i];
}
myArray[pos-1] = data;
int[] resultArray = new int[j+1];
for(int i = 0; i < myArray.length; i++) {
resultArray[i] = myArray[i];
}
resultArray[resultArray.length-1] = lastElement;
return resultArray;
}
public static void main(String args[]){
int[] myArray = {10, 20, 30, 45, 96, 66};
int pos = 3;
int data = 10005;
int[] result = insertElement(myArray, pos, data);
for(int i = 0; i < result.length; i++){
System.out.println(result[i]);
}
}
}
输出
10 20 10005 30 45 96 66
广告