由于此地板涉嫌违规,因此它将折叠在系统中以隐藏此地板并显示此地板
我以前的代码中有实现前序和后序的,但中序应该很相似
结构实用的头发(结构AVL tree * tree ) ) ) ) )。
{
结构酷精灵currentNode=tree-m_rootNode;
目前节点!=tree-m_nullNode )
{
//find the smallest node
while(currentnode-m_child1!=tree-m_nullNode )
current node=current node-m _ child 1;
返回当前节点;
}
返回空值;
}
结构的酷炫精灵avltreeiteratetail (结构*树) ) )。
{
结构酷精灵currentNode=tree-m_rootNode;
目前节点!=tree-m_nullNode )
{
//find the greatest node
while(currentnode-m_child2!=tree-m_nullNode )
current node=current node-m _ child 2;
返回当前节点;
}
返回空值;
}
结构酷精灵AvlTreeIterateNext (
结构AVL tree * tree,
结构酷精灵节点)
{
结构酷精灵currentNode;
if(node-m_child2!=tree-m_nullNode )
{
//lookforrightchild ' ssmallestnode
currentNode=node-m_child2;
while(currentnode-m_child1!=tree-m_nullNode )
current node=current node-m _ child 1;
返回当前节点;
}
elseif(node-m_parent!=tree-m_nullNode )
{
currentNode=node;
//the node has no right child,look back
wile (当前节点!=tree-m_rootNode )
if (current node-m _ parent-m _ child 2!=currentNode )
返回当前节点- m _ parent;
else current node=current node-m _ parent;
}
返回空值;
}
struct酷炫精灵AvlTreeIteratePrev (
结构AVL tree * tree,
结构酷精灵节点)
{
结构酷精灵currentNode;
if(node-m_child1!=tree-m_nullNode )
{
currentNode=node-m_child1;
//look for leftchild ' sgreatestnode
while(currentnode-m_child2!=tree-m_nullNode )
current node=current node-m _ child 2;
返回当前节点;
}
elseif(node-m_parent!=tree-m_nullNode )
{
currentNode=node;
//the node has no left child,look back
wile (当前节点!=tree-m_rootNode )
if (current node-m _ parent-m _ child 1!=currentNode )
返回当前节点- m _ parent;
else current node=current node-m _ parent;
}
返回空值;
}