zoukankan      html  css  js  c++  java
  • LeetCode OJ-- Recover Binary Search Tree ***@

    https://oj.leetcode.com/problems/recover-binary-search-tree/

    一棵二叉搜索树,二叉搜索树的特征是,中根遍历的话,得到的序列是递增的

    题目中,有两个节点弄混了,让恢复这个二叉搜索树 

    class Solution {
    public:
        TreeNode *LastNode = new TreeNode(INT_MIN);
        
        void recoverTree(TreeNode *root) {
            if(root == NULL)
                return;
            
            TreeNode **n1 = (TreeNode**)malloc(sizeof(TreeNode*));
            TreeNode **n2 = (TreeNode**)malloc(sizeof(TreeNode*));
    	*n1 = NULL;
    	*n2 = NULL;
            find(root,n1,n2);
            //swap
            int temp;
    	temp = (*n1)->val; (*n1)->val = (*n2)->val; (*n2)->val = temp;
        }
        
        //中根遍历
        void find(TreeNode *root, TreeNode **n1, TreeNode **n2) 
        {
            if(root == NULL)
                return;
                
            find(root->left,n1,n2);
            
    //分别处理了是 2 1 还是,3 2 1 的情况,高! if(*n1 == NULL && root->val < LastNode->val) { *n1 = LastNode; } if(*n1 != NULL && root->val < LastNode->val) { *n2 = root; } LastNode = root; find(root->right,n1,n2); } };

      

  • 相关阅读:
    java单例类
    java构造方法-this关键字的用法
    java封装
    Bean的装配方式
    scope的范围
    Bean实例化(三种方法)
    依赖注入
    建立Spring项目的基础
    Androids中数据库的使用SQLite
    SharedPreferences
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3871450.html
Copyright © 2011-2022 走看看