前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 1305. 两棵二叉搜索树中的所有元素(二叉树迭代器)

LeetCode 1305. 两棵二叉搜索树中的所有元素(二叉树迭代器)

作者头像
Michael阿明
发布2020-07-13 17:10:49
3780
发布2020-07-13 17:10:49
举报
文章被收录于专栏:Michael阿明学习之路

1. 题目

给你 root1 和 root2 这两棵二叉搜索树

请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。.

提示:

每棵树最多有 5000 个节点。

每个节点的值在 -105, 105 之间。

2. 二叉树迭代器

按照中序迭代,比较两个迭代器的值val

类似题目:LeetCode 653. 两数之和 IV - 输入 BST

代码语言:javascript
复制
class Solution {
	TreeNode *r1, *r2;
	stack<TreeNode*> s1, s2;
	TreeNode *n1, *n2;
public:
    vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
        r1 = root1;
        r2 = root2;
        vector<int> ans;
        TreeNode *cur1 = iterator1(), *cur2 = iterator2();
        while(cur1 || cur2)
        {
        	if(cur1 && !cur2)
        	{
        		ans.push_back(cur1->val);
        		cur1 = iterator1();
        	}
        	else if(!cur1 && cur2)
        	{
        		ans.push_back(cur2->val);
        		cur2 = iterator2();
        	}
        	else
        	{
        		if(cur1->val <= cur2->val)
        		{
        			ans.push_back(cur1->val);
        			cur1 = iterator1();
        		}
        		else
        		{
        			ans.push_back(cur2->val);
        			cur2 = iterator2();
        		}
        	}
        }
        return ans;
    }

    TreeNode* iterator1()//迭代器
    {
    	while(r1 || !s1.empty())
    	{
    		while(r1)
    		{
    			s1.push(r1);
    			r1 = r1->left;
    		}
    		n1 = s1.top();
    		s1.pop();
    		r1 = n1->right;
    		return n1;
    	}
    	return NULL;
    }

    TreeNode* iterator2()//迭代器
    {
    	while(r2 || !s2.empty())
    	{
    		while(r2)
    		{
    			s2.push(r2);
    			r2 = r2->left;
    		}
    		n2 = s2.top();
    		s2.pop();
    		r2 = n2->right;
    		return n2;
    	}
    	return NULL;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 二叉树迭代器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档