zoukankan      html  css  js  c++  java
  • Bottom-up 解法

    遇到一些题目, 用递归加 bottom-up 解法能得到更优的时间复杂度, 对这些题目做一个汇总

    1. google code jam Rational Number Tree

    2. 二叉树的公共祖先节点

    3. leetcode convert sorted list to balanced search tree

    1. Rational Number Tree

    void getPQ(int n, int &p, int &q) {

        if(n == 1) {

            p = q = 1;

            return ;

        }

       

        getPQ(n/2, p, q);

          

        int newp, newq;

        if(n & 1) { /* 右孩子 */

            newp = p + q;

            newq = q;

       

        }else {

            newp = p;

            newq = p + q;

        }

        p = newp;

        q = newq;

    }

       

    void getN(int &n, int p, int q) {

        if(p == 1 && q == 1) {

            n = 1;

            return;

        }

       

        int newp, newq;

        if(p > q) { /* 右孩子 */

            newp = p - q;

            newq = q;

            getN(n, newp, newq);

            n = n*2 + 1;

        }else {

            newp = p;

            newq = q-p;

            getN(n, newp, newq);

            n = n*2;

        }

    }

    2. 二叉树的公共节点

    Node* LCA(Node *root, Node *p, Node *q) {

        if(root == NULL) return NULL;

        if(p == root || q == root) return root;

        Node* lchild = LCA(root->left, p, q);

        Node* rchild = LCA(root->right, p, q);

        if(lchild && rchild) return root;

        if(lchild) return lchild;

        return rchild;

    }

    3. Convert Sorted List to Balanced Search Tree

    TreeNode* buildTree(ListNode* &head, int st, int ed)  {
    	if(st > ed) return NULL;
    
    	int mid = (st+ed)>>1;
    
    	TreeNode* lchild = buildTree(head, st, mid-1);
    	TreeNode* parent = new TreeNode(head->val);
    	head = head->next;
    	TreeNode* rchild = buildTree(head, mid+1, ed);
    
    	parent->left = lchild;
    	parent->right = rchild;
    
    	return parent;
    }
    

      

  • 相关阅读:
    Nginx TCP Proxy模块的编译安装
    树形dp hdu-4616-Game
    UVA 10405 Longest Common Subsequence (dp + LCS)
    MVC中使用EF(2):实现基本的CRUD功能
    [置顶] 关于Qt的学习
    BNU 26480 Horror List【最短路】
    汉语-词语-爱惜:百科
    汉语-词语-珍惜:百科
    汉语-词语-无知:百科
    汉语-词语-愚蠢:百科
  • 原文地址:https://www.cnblogs.com/zhouzhuo/p/3687289.html
Copyright © 2011-2022 走看看