我想编写一个函数,它接受一棵树的节点作为参数。该函数应返回在preOrder中取出节点后访问的下一个节点。
我写了这段代码:
(此代码搜索左子节点并返回它。如果temp没有左子节点但有右子节点,则此函数返回右子节点。但是,如果该节点是叶子节点且没有子节点,则获取父节点,直到获得具有右子节点的节点为止。)
public Node fineNextPreOrder(Node temp)
{
if(temp.left!=null)
return temp.left;
else if((temp.left==null)&&(temp.right!=null))
return temp.right;
else if((temp.left==null)&&(temp.right==null))
{
while((temp!=root)&&(!((temp.parent.left!=null)&&(temp.parent.left==temp)&&(temp.parent.right!=null))))
temp = temp.parent;
if(temp != root)
return temp.parent.right;
}
return null;
}
它可以正常工作,但我想让它递归。
有人能帮助我吗?
感谢您的关注和支持。