快速业务通道

Commons Collections学习笔记(三) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
ndex) {      Node rval = null;      Node node = rootNode[index];//根节点      while (node != null) {        int cmp = compare(data, node.getData(index));//与当前节点比较        if (cmp == 0) {//找到了          rval = node;          break;        } else {//在左子树或右子树中寻找          node = (cmp < 0)             ? node.getLeft(index)             : node.getRight(index);        }      }      return rval;    } private static Node leastNode(final Node node, final int index) {//返回指定节点的最右子节点      Node rval = node;      if (rval != null) {        while (rval.getLeft(index) != null) {          rval = rval.getLeft(index);        }      }      return rval;    } private Node nextGreater(final Node node, final int index) {//返回下一个大于指定节点的节点      Node rval = null;      if (node == null) {        rval = null;      } else if (node.getRight(index) != null) {//右子树不为空,返回右子树最左子节点        rval = leastNode(node.getRight(index), index);      } else {//不断向上,只要仍然是右子节点        Node parent = node.getParent(index);        Node child = node;        while ((parent != null) && (child == parent.getRight(index))) {          child = parent;          parent = parent.getParent(index);        }        rval = parent;      }      return rval;    } private void rotateLeft(final Node node, final int index) {//左旋操作      Node rightChild = node.getRight(index);      node.setRight(rightChild.getLeft(index), index);      if (rightChild.getLeft(index) != null) {        rightChild.getLeft(index).setParent(node, index);      }      rightChild.setParent(node.getParent(index), index);      if (node.getParent(index) == null) {//设置为根节点        rootNode[index] = rightChild;      } else if (node.getParent(index).getLeft(index) == node) {        node.getParent(index).setLeft(rightChild, index);      } else {        node.getParent(index).setRight(rightChild, index);      }      rightChild.setLeft(node, index);      node.setParent(rightChild, index);    } private void rotateRight(final Node node, final int index) {//右旋操作      Node leftChild = node.getLeft(index);      node.setLeft(leftChild.getRight(index), index);      if (leftChild.getRight(index) != null) {        leftChild.getRight(index).setParent(node, index);      }      leftChild.setParent(node.getParent(index), index);      if (node.getParent(index) == null) {//设置为根节点        rootNode[index] = leftChild;      } else if (node.getParent(index).getRight(index) == node) {        node.getParent(index).setRight(leftChild, index);      } else {        node.getParent(index).setLeft(leftChild, index);      }      leftChild

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号