285. 二叉搜索树中的中序后继

方法一:递归遍历,记录全局变量的父节点,当parent == target的时候,当前节点就是答案。 

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* res;
    TreeNode* parent;
    void dfs(TreeNode* root,TreeNode* p){
        if(!root)
            return ;
        dfs(root->left, p);
        if(!res&&parent==p){
            res=root;
            return ;
        }
        parent=root;
        dfs(root->right, p);         
        
    }
    TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
        res=nullptr;
        parent=nullptr;

        dfs(root, p);
        return res;
    }
};

方法二:迭代

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
        TreeNode* parent=nullptr, *node;
        stack<TreeNode*> stk;
        node=root;
        while(stk.size()||node){
            while(node){
                stk.push(node);
                node=node->left;
            }
            node=stk.top();
            stk.pop();
            if(parent == p)
                return node;
            parent = node;
            node=node->right;
        }
        return nullptr;
    }
};

相关推荐

  1. 285. 搜索

    2024-06-16 12:36:05       8 阅读
  2. 【LintCode】448 · 查找

    2024-06-16 12:36:05       16 阅读
  3. 遍历

    2024-06-16 12:36:05       41 阅读
  4. 便利,遍历,遍历

    2024-06-16 12:36:05       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 12:36:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 12:36:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 12:36:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 12:36:05       20 阅读

热门阅读

  1. vue学习(一)

    2024-06-16 12:36:05       6 阅读
  2. vue相关的前端知识回顾

    2024-06-16 12:36:05       7 阅读
  3. vue中的组件通信

    2024-06-16 12:36:05       9 阅读
  4. 使用C++调用VTK库实现三维显示示例

    2024-06-16 12:36:05       7 阅读
  5. 微信小程序(2)

    2024-06-16 12:36:05       12 阅读
  6. Linux系统内核作用

    2024-06-16 12:36:05       8 阅读