向树中插入键
向二叉树中插入元素没有特别的规则,你可以在任何需要的地方插入节点。
插入节点时唯一需要注意的是,在二叉树中,每个节点最多只能有两个子节点。
因此,要将节点插入树中,
逐层遍历每个节点,检查它是否有左子节点和右子节点。
如果任何节点同时拥有左子节点和右子节点,则无法再插入另一个节点,因为二叉树中的节点最多只能有两个子节点,将这些值添加到队列中并继续。
如果任何节点没有左子节点或右子节点,则创建一个新节点并将其添加到那里。
简而言之,将节点插入到没有左子树或右子树或两者都没有的父节点。
示例
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
广告