Java 将节点连接到树中的下一个同级节点

Java 将节点连接到树中的下一个同级节点,java,performance,binary-search-tree,Java,Performance,Binary Search Tree,我尝试将树中的所有节点连接到它们的直接右侧兄弟节点 例如,root.nextSibling应为null。如果root有两个子项“a”和“b”,则a.nextSibling应为“b”,b的应为null 在向下移动到下一个级别之前,我在为该级别中的所有节点设置nextSibling指针时,按级别顺序遍历了树 请检查代码,并让我知道是否有更好的方法来实现这一点 \* In class BinTree.java *\ public void connectSiblings() { Queue q

我尝试将树中的所有节点连接到它们的直接右侧兄弟节点

例如,root.nextSibling应为null。如果root有两个子项“a”和“b”,则a.nextSibling应为“b”,b的应为null

在向下移动到下一个级别之前,我在为该级别中的所有节点设置nextSibling指针时,按级别顺序遍历了树

请检查代码,并让我知道是否有更好的方法来实现这一点

\* In class BinTree.java *\
public void connectSiblings() {
    Queue q = new LinkedList(); 
    if(root!= null) {
        q.add(root);
    }        
    while(!q.isEmpty()) {
       Object[] a = q.toArray();
       for(int i = 0; i < a.length; i++) {
           BinTreeNode node = (BinTreeNode)q.remove();
           if(i == a.length-1) {
               ((BinTreeNode) a[i]).nextSibling = null;
           }
           else {
               ((BinTreeNode) a[i]).nextSibling = (BinTreeNode) a[i+1];
           } 
           if(node.visitLeftChild() != null) {
               q.add(node.visitLeftChild());
           }
           if(node.visitRightChild() != null) {
               q.add(node.visitRightChild());
           }             
       }     
    }
}



\* In class BinTreeNode.java *\
public BinTreeNode visitLeftChild() {
   if(this.leftChild != null) {
       return this.leftChild;
   } 
   return null;
}

\* In class BinTreeNode.java *\
public BinTreeNode visitRightChild() {
    if(this.rightChild != null) {
        return this.rightChild;
    }
    return null;
}
类BinTree.java中的
\**\
公共文件无效(){
队列q=新的LinkedList();
if(root!=null){
q、 添加(根);
}        
而(!q.isEmpty()){
对象[]a=q.toArray();
for(int i=0;i
通过BinTreeNode引用其父节点,这一点更容易实现。那么,兄弟姐妹是父母的孩子,除了
这个
,根没有兄弟姐妹的特殊情况很容易被父母确定为
null

更好你不是说使用一个已经这样做的内置类吗?不,我不是说。寻找时间复杂度更好的东西。如果可能的话,也可以通过递归的方式实现。当树有3个级别时,这将如何工作?在二叉树中,一个节点严格地有两个子节点。如果第二级有2个子级,而叶级有4个子级,则其中3个子级应指向其右侧的节点,第四个子级应指向null。当您有对父节点的引用时,您可以为同一父节点的节点设置引用,但父节点的右子节点如何指向另一父节点的左子节点?父节点的兄弟节点的子节点是近亲。为了包括堂兄弟姐妹,添加父母的兄弟姐妹子女是上述内容的简单扩展。