二叉树的下一个结点
class Solution {
public:
TreeLinkNode* GetNext(TreeLinkNode* pNode)
{
//第一种情况
if(pNode==NULL)
return pNode;
//第二种情况
else if(pNode->right!=NULL)
{
pNode=pNode->right;//我觉得像这种需要变换值的,最好还是申请一个新的节点
while(pNode->left!=NULL)
{
pNode=pNode->left;//在这里可以看到我们对其直接赋值了,对结构体直接赋值了
}
return pNode;
}
else
{
while(pNode->next!=NULL)//还需要考虑就只有这一个结点的情况,所以返回了一个NULL
{
TreeLinkNode* root=pNode->next;
if(root->left==pNode)//两个链表结点之间还能比较是否等于??
return root;
pNode=pNode->next;
}
}
return NULL;//可能是最后一个遍历的结点,所以返回NULL
}
};总结:本就是大神解法,
1.不同结点之间可以用=赋值==判断
2.这是用的迭代代替的递归

