• 【力扣 043】897. 递增顺序查找树


    897. 递增顺序查找树

    给你一棵二叉搜索树的 root ,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。

    示例 1:

    输入:root = [5,3,6,2,4,    null ,8,1,    null ,    null ,    null ,7,9]
    输出:[1,    null ,2,    null ,3,    null ,4,    null ,5,    null ,6,    null ,7,    null ,8,    null ,9]

    https://leetcode.cn/problems/increasing-order-search-tree/#:~:text=%E8%BE%93%E5%85%A5%EF%BC%9Aroot%20%3D%20%5B5%2C3%2C6%2C2%2C4%2Cnull%2C8%2C1%2Cnull%2Cnull%2Cnull%2C7%2C9%5D%0A%E8%BE%93%E5%87%BA%EF%BC%9A%5B1%2Cnull%2C2%2Cnull%2C3%2Cnull%2C4%2Cnull%2C5%2Cnull%2C6%2Cnull%2C7%2Cnull%2C8%2Cnull%2C9%5D

    输入:root = [5,3,6,2,4,  null ,8,1,  null ,  null ,  null ,7,9]
    输出:[1,  null ,2,  null ,3,  null ,4,  null ,5,  null ,6,  null ,7,  null ,8,  null ,9]

    输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]
    输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/increasing-order-search-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    示例 2:


    输入:root = [5, 1, 7]
    输出:[1, null, 5, null, 7]
     

    提示:

    树中节点数的取值范围是 [1, 100]
    0 <= Node.val <= 1000

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/increasing-order-search-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     * };
     */
    class Solution {
    public:
        TreeNode* increasingBST(TreeNode* root) 
        {
            if(!root) return nullptr;
            stack<TreeNode*> st;
            TreeNode *p = root, *res, *pre =nullptr;
            while(!st.empty() || p)
            {
                while(p)
                {
                    st.push(p);
                    p = p->left;
                }
    
                p = st.top();
                st.pop();
                if(!pre)
                {
                    pre = p;
                    res = pre;
                    p = p->right;
                }
                else
                {
                    pre->right = p;
                    pre = pre->right;
                    p->left = nullptr;          
                    p = p->right;
                }
            }
            return res;
        }
    };
  • 相关阅读:
    gitlab11.5.4 配置邮件提醒
    docker 安装 mongodb
    dd测试
    k8s部署rocketmq 双主
    rocketmq 多master集群部署
    Kubernetes中的Taint污点和Toleration容忍
    Zookeeper分布式集群搭建
    初识ZooKeeper
    hdu 5071(2014鞍山现场赛B题,大模拟)
    hdu 5073
  • 原文地址:https://www.cnblogs.com/sunbines/p/16293843.html
Copyright © 2020-2023  润新知