Lisheng Sun created HADOOP-16671:
------------------------------------

             Summary: Optimize InnerNodeImpl#getLeaf
                 Key: HADOOP-16671
                 URL: https://issues.apache.org/jira/browse/HADOOP-16671
             Project: Hadoop Common
          Issue Type: Improvement
            Reporter: Lisheng Sun


{code:java}
@Override
public Node getLeaf(int leafIndex, Node excludedNode) {
  int count=0;
  // check if the excluded node a leaf
  boolean isLeaf = !(excludedNode instanceof InnerNode);
  // calculate the total number of excluded leaf nodes
  int numOfExcludedLeaves =
      isLeaf ? 1 : ((InnerNode)excludedNode).getNumOfLeaves();
  if (isLeafParent()) { // children are leaves
    if (isLeaf) { // excluded node is a leaf node
      if (excludedNode != null &&
          childrenMap.containsKey(excludedNode.getName())) {
        int excludedIndex = children.indexOf(excludedNode);
        if (excludedIndex != -1 && leafIndex >= 0) {
          // excluded node is one of the children so adjust the leaf index
          leafIndex = leafIndex>=excludedIndex ? leafIndex+1 : leafIndex;
        }
      }
    }
    // range check
    if (leafIndex<0 || leafIndex>=this.getNumOfChildren()) {
      return null;
    }
    return children.get(leafIndex);
  } else {
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-dev-h...@hadoop.apache.org

Reply via email to