Packageorg.aswing.tree
Classpublic class DefaultMutableTreeNode
ImplementsMutableTreeNode
SubclassesFHTreeStateNode

A DefaultMutableTreeNode is a general-purpose node in a tree data structure.

A tree node may have at most one parent and 0 or more children. DefaultMutableTreeNode provides operations for examining and modifying a node's parent and children and also operations for examining the tree that the node is a part of. A node's tree is the set of all nodes that can be reached by starting at the node and following all the possible links to parents and children. A node with no parent is the root of its tree; a node with no children is a leaf. A tree may consist of many subtrees, each node acting as the root for its own subtree.

This class provides enumerations for efficiently traversing a tree or subtree in various orders or for following the path between two nodes. A DefaultMutableTreeNode may also hold a reference to a user object, the use of which is left to the user. Asking a DefaultMutableTreeNode for its string representation with toString() returns the string representation of its user object.

While DefaultMutableTreeNode implements the MutableTreeNode interface and will allow you to add in any implementation of MutableTreeNode not all of the methods in DefaultMutableTreeNode will be applicable to all MutableTreeNodes implementations. Especially with some of the enumerations that are provided, using some of these methods assumes the DefaultMutableTreeNode contains only DefaultMutableNode instances. All of the TreeNode/MutableTreeNode methods will behave as defined no matter what implementations are added.



Protected Properties
 PropertyDefined by
  parent : MutableTreeNode
this node's parent, or null if this node has no parent
DefaultMutableTreeNode
Public Methods
 MethodDefined by
  
DefaultMutableTreeNode(userObject:Object, allowsChildren:Boolean = true)
Creates a tree node with no parent, no children, initialized with the specified user object, and that allows children only if specified.
DefaultMutableTreeNode
  
append(newChild:MutableTreeNode):void
Removes newChild from its parent and makes it a child of this node by adding it to the end of this node's child array.
DefaultMutableTreeNode
  
Creates and returns an enumeration that traverses the subtree rooted at this node in breadth-first order.
DefaultMutableTreeNode
  
children():Array
Creates and returns a forward-order enumeration of this node's children.
DefaultMutableTreeNode
  
Creates and returns an enumeration that traverses the subtree rooted at this node in depth-first order.
DefaultMutableTreeNode
  
Returns true if this node is allowed to have children.
DefaultMutableTreeNode
  
Returns the child in this node's child array that immediately follows aChild, which must be a child of this node.
DefaultMutableTreeNode
  
getChildAt(index:int):TreeNode
Returns the child at the specified index in this node's child array.
DefaultMutableTreeNode
  
Returns the child in this node's child array that immediately precedes aChild, which must be a child of this node.
DefaultMutableTreeNode
  
Returns the number of children of this node.
DefaultMutableTreeNode
  
getDepth():int
Returns the depth of the tree rooted at this node -- the longest distance from this node to a leaf.
DefaultMutableTreeNode
  
Returns this node's first child.
DefaultMutableTreeNode
  
Finds and returns the first leaf that is a descendant of this node -- either this node or its first child's first leaf.
DefaultMutableTreeNode
  
getIndex(aChild:TreeNode):int
Returns the index of the specified child in this node's child array.
DefaultMutableTreeNode
  
Returns this node's last child.
DefaultMutableTreeNode
  
Finds and returns the last leaf that is a descendant of this node -- either this node or its last child's last leaf.
DefaultMutableTreeNode
  
Returns the total number of leaves that are descendants of this node.
DefaultMutableTreeNode
  
getLevel():int
Returns the number of levels above this node -- the distance from the root to this node.
DefaultMutableTreeNode
  
Returns the leaf after this node or null if this node is the last leaf in the tree.
DefaultMutableTreeNode
  
Returns the node that follows this node in a preorder traversal of this node's tree.
DefaultMutableTreeNode
  
Returns the next sibling of this node in the parent's children array.
DefaultMutableTreeNode
  
Returns this node's parent or null if this node has no parent.
DefaultMutableTreeNode
  
getPath():Array
Returns the path from the root, to get to this node.
DefaultMutableTreeNode
  
Returns the leaf before this node or null if this node is the first leaf in the tree.
DefaultMutableTreeNode
  
Returns the node that precedes this node in a preorder traversal of this node's tree.
DefaultMutableTreeNode
  
Returns the previous sibling of this node in the parent's children array.
DefaultMutableTreeNode
  
Returns the root of the tree that contains this node.
DefaultMutableTreeNode
  
Returns the nearest common ancestor to this node and aNode.
DefaultMutableTreeNode
  
Returns the number of siblings of this node.
DefaultMutableTreeNode
  
Returns this node's user object.
DefaultMutableTreeNode
  
Returns the user object path, from the root, to get to this node.
DefaultMutableTreeNode
  
insert(newChild:MutableTreeNode, childIndex:int):void
Removes newChild from its present parent (if it has a parent), sets the child's parent to this node, and then adds the child to this node's child array at index childIndex.
DefaultMutableTreeNode
  
isLeaf():Boolean
Returns true if this node has no children.
DefaultMutableTreeNode
  
isNodeAncestor(anotherNode:TreeNode):Boolean
Returns true if anotherNode is an ancestor of this node -- if it is this node, this node's parent, or an ancestor of this node's parent.
DefaultMutableTreeNode
  
isNodeChild(aNode:TreeNode):Boolean
Returns true if aNode is a child of this node.
DefaultMutableTreeNode
  
Returns true if anotherNode is a descendant of this node -- if it is this node, one of this node's children, or a descendant of one of this node's children.
DefaultMutableTreeNode
  
Returns true if and only if aNode is in the same tree as this node.
DefaultMutableTreeNode
  
isNodeSibling(anotherNode:TreeNode):Boolean
Returns true if anotherNode is a sibling of (has the same parent as) this node.
DefaultMutableTreeNode
  
isRoot():Boolean
Returns true if this node is the root of the tree.
DefaultMutableTreeNode
  
Creates and returns an enumeration that follows the path from ancestor to this node.
DefaultMutableTreeNode
  
Creates and returns an enumeration that traverses the subtree rooted at this node in postorder.
DefaultMutableTreeNode
  
Creates and returns an enumeration that traverses the subtree rooted at this node in preorder.
DefaultMutableTreeNode
  
remove(aChild:MutableTreeNode):void
Removes aChild from this node's child array, giving it a null parent.
DefaultMutableTreeNode
  
Removes all of this node's children, setting their parents to null.
DefaultMutableTreeNode
  
removeAt(childIndex:int):void
Removes the child at the specified index from this node's children and sets that node's parent to null.
DefaultMutableTreeNode
  
Removes the subtree rooted at this node from the tree, giving this node a null parent.
DefaultMutableTreeNode
  
setAllowsChildren(allows:Boolean):void
Determines whether or not this node is allowed to have children.
DefaultMutableTreeNode
  
setParent(newParent:MutableTreeNode):void
Sets this node's parent to newParent but does not change the parent's child array.
DefaultMutableTreeNode
  
setUserObject(userObject:*):void
Sets the user object for this node to userObject.
DefaultMutableTreeNode
  
toString():String
Returns the result of sending toString() to this node's user object, or null if this node has no user object.
DefaultMutableTreeNode
Property detail
parentproperty
protected var parent:MutableTreeNode

this node's parent, or null if this node has no parent

Constructor detail
DefaultMutableTreeNode()constructor
public function DefaultMutableTreeNode(userObject:Object, allowsChildren:Boolean = true)

Creates a tree node with no parent, no children, initialized with the specified user object, and that allows children only if specified.

Parameters
userObject:Object — an Object provided by the user that constitutes the node's data
 
allowsChildren:Boolean (default = true) — (optional)if true, the node is allowed to have child nodes -- otherwise, it is always a leaf node. Default is true.
Method detail
append()method
public function append(newChild:MutableTreeNode):void

Removes newChild from its parent and makes it a child of this node by adding it to the end of this node's child array.

Parameters
newChild:MutableTreeNode — node to add as a child of this node

See also

breadthFirstEnumeration()method 
public function breadthFirstEnumeration():Array

Creates and returns an enumeration that traverses the subtree rooted at this node in breadth-first order. The first node returned by the enumeration's nextElement() method is this node.

Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.

Returns
Array — an enumeration for traversing the tree in breadth-first order

See also

children()method 
public function children():Array

Creates and returns a forward-order enumeration of this node's children. Modifying this node's child array invalidates any child enumerations created before the modification.

Returns
Array — an Enumeration of this node's children
depthFirstEnumeration()method 
public function depthFirstEnumeration():Array

Creates and returns an enumeration that traverses the subtree rooted at this node in depth-first order. The first node returned by the enumeration's nextElement() method is the leftmost leaf. This is the same as a postorder traversal.

Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.

Returns
Array — an enumeration for traversing the tree in depth-first order

See also

getAllowsChildren()method 
public function getAllowsChildren():Boolean

Returns true if this node is allowed to have children.

Returns
Boolean — true if this node allows children, else false
getChildAfter()method 
public function getChildAfter(aChild:TreeNode):TreeNode

Returns the child in this node's child array that immediately follows aChild, which must be a child of this node. If aChild is the last child, returns null. This method performs a linear search of this node's children for aChild and is O(n) where n is the number of children; to traverse the entire array of children, use an enumeration instead.

Parameters
aChild:TreeNode

Returns
TreeNode — the child of this node that immediately follows aChild

See also

getChildAt()method 
public function getChildAt(index:int):TreeNode

Returns the child at the specified index in this node's child array.

Parameters
index:int — an index into this node's child array

Returns
TreeNode — the TreeNode in this node's child array at the specified index
getChildBefore()method 
public function getChildBefore(aChild:TreeNode):TreeNode

Returns the child in this node's child array that immediately precedes aChild, which must be a child of this node. If aChild is the first child, returns null. This method performs a linear search of this node's children for aChild and is O(n) where n is the number of children.

Parameters
aChild:TreeNode

Returns
TreeNode — the child of this node that immediately precedes aChild
getChildCount()method 
public function getChildCount():int

Returns the number of children of this node.

Returns
int — an int giving the number of children of this node
getDepth()method 
public function getDepth():int

Returns the depth of the tree rooted at this node -- the longest distance from this node to a leaf. If this node has no children, returns 0. This operation is much more expensive than getLevel() because it must effectively traverse the entire tree rooted at this node.

Returns
int — the depth of the tree whose root is this node

See also

getFirstChild()method 
public function getFirstChild():TreeNode

Returns this node's first child.

Returns
TreeNode — the first child of this node, null if this node has no children
getFirstLeaf()method 
public function getFirstLeaf():DefaultMutableTreeNode

Finds and returns the first leaf that is a descendant of this node -- either this node or its first child's first leaf. Returns this node if it is a leaf.

Returns
DefaultMutableTreeNode — the first leaf in the subtree rooted at this node

See also

getIndex()method 
public function getIndex(aChild:TreeNode):int

Returns the index of the specified child in this node's child array. If the specified node is not a child of this node, returns -1. This method performs a linear search and is O(n) where n is the number of children.

Parameters
aChild:TreeNode — the TreeNode to search for among this node's children

Returns
int — an int giving the index of the node in this node's child array, or -1 if the specified node is a not a child of this node
getLastChild()method 
public function getLastChild():TreeNode

Returns this node's last child.

Returns
TreeNode — the last child of this node, null if this node has no children
getLastLeaf()method 
public function getLastLeaf():DefaultMutableTreeNode

Finds and returns the last leaf that is a descendant of this node -- either this node or its last child's last leaf. Returns this node if it is a leaf.

Returns
DefaultMutableTreeNode — the last leaf in the subtree rooted at this node

See also

getLeafCount()method 
public function getLeafCount():int

Returns the total number of leaves that are descendants of this node. If this node is a leaf, returns 1. This method is O(n) where n is the number of descendants of this node.

Returns
int — the number of leaves beneath this node

See also

getLevel()method 
public function getLevel():int

Returns the number of levels above this node -- the distance from the root to this node. If this node is the root, returns 0.

Returns
int — the number of levels above this node

See also

getNextLeaf()method 
public function getNextLeaf():DefaultMutableTreeNode

Returns the leaf after this node or null if this node is the last leaf in the tree.

In this implementation of the MutableNode interface, this operation is very inefficient. In order to determine the next node, this method first performs a linear search in the parent's child-list in order to find the current node.

That implementation makes the operation suitable for short traversals from a known position. But to traverse all of the leaves in the tree, you should use depthFirstEnumeration to enumerate the nodes in the tree and use isLeaf on each node to determine which are leaves.

Returns
DefaultMutableTreeNode — returns the next leaf past this node

See also

getNextNode()method 
public function getNextNode():DefaultMutableTreeNode

Returns the node that follows this node in a preorder traversal of this node's tree. Returns null if this node is the last node of the traversal. This is an inefficient way to traverse the entire tree; use an enumeration, instead.

Returns
DefaultMutableTreeNode — the node that follows this node in a preorder traversal, or null if this node is last

See also

getNextSibling()method 
public function getNextSibling():DefaultMutableTreeNode

Returns the next sibling of this node in the parent's children array. Returns null if this node has no parent or is the parent's last child. This method performs a linear search that is O(n) where n is the number of children; to traverse the entire array, use the parent's child enumeration instead.

Returns
DefaultMutableTreeNode — the sibling of this node that immediately follows this node

See also

getParent()method 
public function getParent():TreeNode

Returns this node's parent or null if this node has no parent.

Returns
TreeNode — this node's parent TreeNode, or null if this node has no parent
getPath()method 
public function getPath():Array

Returns the path from the root, to get to this node. The last element in the path is this node.

Returns
Array — an array of TreeNode objects giving the path, where the first element in the path is the root and the last element is this node.
getPreviousLeaf()method 
public function getPreviousLeaf():DefaultMutableTreeNode

Returns the leaf before this node or null if this node is the first leaf in the tree.

In this implementation of the MutableNode interface, this operation is very inefficient. In order to determine the previous node, this method first performs a linear search in the parent's child-list in order to find the current node.

That implementation makes the operation suitable for short traversals from a known position. But to traverse all of the leaves in the tree, you should use depthFirstEnumeration to enumerate the nodes in the tree and use isLeaf on each node to determine which are leaves.

Returns
DefaultMutableTreeNode — returns the leaf before this node

See also

getPreviousNode()method 
public function getPreviousNode():DefaultMutableTreeNode

Returns the node that precedes this node in a preorder traversal of this node's tree. Returns null if this node is the first node of the traversal -- the root of the tree. This is an inefficient way to traverse the entire tree; use an enumeration, instead.

Returns
DefaultMutableTreeNode — the node that precedes this node in a preorder traversal, or null if this node is the first

See also

getPreviousSibling()method 
public function getPreviousSibling():DefaultMutableTreeNode

Returns the previous sibling of this node in the parent's children array. Returns null if this node has no parent or is the parent's first child. This method performs a linear search that is O(n) where n is the number of children.

Returns
DefaultMutableTreeNode — the sibling of this node that immediately precedes this node
getRoot()method 
public function getRoot():TreeNode

Returns the root of the tree that contains this node. The root is the ancestor with a null parent.

Returns
TreeNode — the root of the tree that contains this node

See also

getSharedAncestor()method 
public function getSharedAncestor(aNode:DefaultMutableTreeNode):TreeNode

Returns the nearest common ancestor to this node and aNode. Returns null, if no such ancestor exists -- if this node and aNode are in different trees or if aNode is null. A node is considered an ancestor of itself.

Parameters
aNode:DefaultMutableTreeNode — node to find common ancestor with

Returns
TreeNode — nearest ancestor common to this node and aNode, or null if none

See also

getSiblingCount()method 
public function getSiblingCount():int

Returns the number of siblings of this node. A node is its own sibling (if it has no parent or no siblings, this method returns 1).

Returns
int — the number of siblings of this node
getUserObject()method 
public function getUserObject():*

Returns this node's user object.

Returns
* — the Object stored at this node by the user

See also

getUserObjectPath()method 
public function getUserObjectPath():Array

Returns the user object path, from the root, to get to this node. If some of the TreeNodes in the path have null user objects, the returned path will contain nulls.

Returns
Array
insert()method 
public function insert(newChild:MutableTreeNode, childIndex:int):void

Removes newChild from its present parent (if it has a parent), sets the child's parent to this node, and then adds the child to this node's child array at index childIndex. newChild must not be null and must not be an ancestor of this node.

Parameters
newChild:MutableTreeNode — the MutableTreeNode to insert under this node
 
childIndex:int — the index in this node's child array where this node is to be inserted

See also

isLeaf()method 
public function isLeaf():Boolean

Returns true if this node has no children. To distinguish between nodes that have no children and nodes that cannot have children (e.g. to distinguish files from empty directories), use this method in conjunction with getAllowsChildren

Returns
Boolean — true if this node has no children

See also

isNodeAncestor()method 
public function isNodeAncestor(anotherNode:TreeNode):Boolean

Returns true if anotherNode is an ancestor of this node -- if it is this node, this node's parent, or an ancestor of this node's parent. (Note that a node is considered an ancestor of itself.) If anotherNode is null, this method returns false. This operation is at worst O(h) where h is the distance from the root to this node.

Parameters
anotherNode:TreeNode — node to test as an ancestor of this node

Returns
Boolean — true if this node is a descendant of anotherNode

See also

isNodeChild()method 
public function isNodeChild(aNode:TreeNode):Boolean

Returns true if aNode is a child of this node. If aNode is null, this method returns false.

Parameters
aNode:TreeNode

Returns
Boolean — true if aNode is a child of this node; false if aNode is null
isNodeDescendant()method 
public function isNodeDescendant(anotherNode:DefaultMutableTreeNode):Boolean

Returns true if anotherNode is a descendant of this node -- if it is this node, one of this node's children, or a descendant of one of this node's children. Note that a node is considered a descendant of itself. If anotherNode is null, returns false. This operation is at worst O(h) where h is the distance from the root to anotherNode.

Parameters
anotherNode:DefaultMutableTreeNode — node to test as descendant of this node

Returns
Boolean — true if this node is an ancestor of anotherNode

See also

isNodeRelated()method 
public function isNodeRelated(aNode:DefaultMutableTreeNode):Boolean

Returns true if and only if aNode is in the same tree as this node. Returns false if aNode is null.

Parameters
aNode:DefaultMutableTreeNode

Returns
Boolean — true if aNode is in the same tree as this node; false if aNode is null

See also

isNodeSibling()method 
public function isNodeSibling(anotherNode:TreeNode):Boolean

Returns true if anotherNode is a sibling of (has the same parent as) this node. A node is its own sibling. If anotherNode is null, returns false.

Parameters
anotherNode:TreeNode — node to test as sibling of this node

Returns
Boolean — true if anotherNode is a sibling of this node
isRoot()method 
public function isRoot():Boolean

Returns true if this node is the root of the tree. The root is the only node in the tree with a null parent; every tree has exactly one root.

Returns
Boolean — true if this node is the root of its tree
pathFromAncestorEnumeration()method 
public function pathFromAncestorEnumeration(ancestor:TreeNode):Array

Creates and returns an enumeration that follows the path from ancestor to this node. The enumeration's nextElement() method first returns ancestor, then the child of ancestor that is an ancestor of this node, and so on, and finally returns this node. Creation of the enumeration is O(m) where m is the number of nodes between this node and ancestor, inclusive. Each nextElement() message is O(1).

Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.

Parameters
ancestor:TreeNode

Returns
Array — an enumeration for following the path from an ancestor of this node to this one

See also

postorderEnumeration()method 
public function postorderEnumeration():Array

Creates and returns an enumeration that traverses the subtree rooted at this node in postorder. The first node returned by the enumeration's nextElement() method is the leftmost leaf. This is the same as a depth-first traversal.

Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.

Returns
Array — an enumeration for traversing the tree in postorder

See also

preorderEnumeration()method 
public function preorderEnumeration():Array

Creates and returns an enumeration that traverses the subtree rooted at this node in preorder. The first node returned by the enumeration's nextElement() method is this node.

Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.

Returns
Array — an enumeration for traversing the tree in preorder

See also

remove()method 
public function remove(aChild:MutableTreeNode):void

Removes aChild from this node's child array, giving it a null parent.

Parameters
aChild:MutableTreeNode — a child of this node to remove
removeAllChildren()method 
public function removeAllChildren():void

Removes all of this node's children, setting their parents to null. If this node has no children, this method does nothing.

removeAt()method 
public function removeAt(childIndex:int):void

Removes the child at the specified index from this node's children and sets that node's parent to null. The child node to remove must be a MutableTreeNode.

Parameters
childIndex:int — the index in this node's child array of the child to remove, nothing happen if childIndex is out of bounds
removeFromParent()method 
public function removeFromParent():void

Removes the subtree rooted at this node from the tree, giving this node a null parent. Does nothing if this node is the root of its tree.

setAllowsChildren()method 
public function setAllowsChildren(allows:Boolean):void

Determines whether or not this node is allowed to have children. If allows is false, all of this node's children are removed.

Note: By default, a node allows children. Parameters

allows:Boolean — true if this node is allowed to have children
setParent()method 
public function setParent(newParent:MutableTreeNode):void

Sets this node's parent to newParent but does not change the parent's child array. This method is called from insert() and remove() to reassign a child's parent, it should not be messaged from anywhere else.

Parameters
newParent:MutableTreeNode — this node's new parent
setUserObject()method 
public function setUserObject(userObject:*):void

Sets the user object for this node to userObject.

Parameters
userObject:* — the Object that constitutes this node's user-specified data

See also

toString()method 
public function toString():String

Returns the result of sending toString() to this node's user object, or null if this node has no user object.

Returns
String

See also