无右子树的两个分支其实可以合并,迭代两个节点pre即前一个结点和cur即前一个结点的父节点,初始时pre=输入,cur=输入的父节点,迭代停止条件为cur == nullptr || cur->left == pre。 总体代码: class Solution { public: TreeLinkNode* GetNext(TreeLinkNode* pNode) { if (pNode == nullptr) return nullptr; // 如果有右子 if (pNode->right) { TreeLinkNode* cur = pNode->right; while (cur->left) { cur = cur->left; } return cur; } // 无右子,一直迭代到cur为父的左子,此时父为下一个 else { TreeLinkNode* pre = pNode; TreeLinkNode* cur = pNode->next; while(cur != nullptr && cur->left != pre) { pre = cur; cur = cur->next; } return cur; } } };
1

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
牛客网
牛客企业服务