美文网首页
剑指offer第一天

剑指offer第一天

作者: HannahLi_9f1c | 来源:发表于2019-04-06 19:35 被阅读0次
  1. 序列化二叉树
import java.util.Queue;
import java.util.LinkedList;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    String Serialize(TreeNode root) {
        if(root == null){
            return "#,";
        }
        StringBuilder str = new StringBuilder();
        str.append(root.val+",");
        str.append(Serialize(root.left));
        str.append(Serialize(root.right));
        return str.toString();
        
  }
    TreeNode Deserialize(String str) {
       if(str == null || str.length() == 0)
           return null;
        String arr[] = str.split(",");
        Queue <String> queue = new LinkedList<String>();
        for(int i=0;i<arr.length;i++){
            queue.add(arr[i]);
           
        }
         return buildTree(queue);
    }
     TreeNode buildTree(Queue<String> q){
        if(q.size()==0)
            return null;
        String str = q.poll();
        if(str == "#"|| str.equals("#"))
            return null;
        TreeNode root = new TreeNode(Integer.valueOf(str));
        root.left = buildTree(q);
        root.right = buildTree(q);
        return root;
    }
  
}
  1. 二叉查找树的第k个结点
import java.util.Stack;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    TreeNode KthNode(TreeNode pRoot, int k)
    {
        if(k == 0)
            return null;
        int count = 0;
        TreeNode result = null;
        Stack <TreeNode> stack = new Stack<TreeNode>();
      while(pRoot!=null || !stack.isEmpty()){ 
//向左找到当前最小结点
            while(pRoot!=null){
                stack.push(pRoot);
                pRoot = pRoot.left;
            }
//弹出栈中最小结点
        TreeNode min = stack.pop();
          System.out.println(min.val);
           count++;
          if(count == k)
              return min;
        if(!stack.isEmpty()){
//弹出栈中间第二小结点
            count++;
            pRoot = stack.pop();
            System.out.println( pRoot.val);
            if(count == k)
                return pRoot;
         //pRoot指向第二小结点的右子树
            pRoot = pRoot.right;
        } else {
         //如果栈中无结点,pRoot指向最小结点右子树
            pRoot = min.right;
        }
      }
        return result;   
        
    }


}
  1. 数据流中的中位数
import java.util.Queue;
import java.util.*;
public class Solution {
    private int count = 0;
    private PriorityQueue <Integer> minPq = new PriorityQueue<Integer>();
    private PriorityQueue <Integer> maxPq = new PriorityQueue<Integer>(15,new Comparator<Integer>(){
        @Override
        public int compare(Integer o1,Integer o2){
            return o2-o1;
        } 
    });

    public void Insert(Integer num) {
        // 当前偶数个,加入最小堆
        if(count%2 == 0){
            maxPq.offer(num);
            int firstMax = maxPq.poll();
            minPq.offer(firstMax);
        } else{
            minPq.offer(num);
            int firstMin = minPq.poll();
            maxPq.offer(firstMin);
        }
        count++;
        
    
    }

    public Double GetMedian() {
        if(count%2 == 0){
            return new Double((minPq.peek()+maxPq.peek())/2);           
        } else{
            return new Double(minPq.peek());
            
        }
        
    }


}

相关文章

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 剑指offer 和 leetcode题目

    剑指offer leetcode

  • 单例模式

    单例模式 最近在看《剑指offer》,根据《剑指offer》的讲解,结合《effectiveJava》简单学习了一...

  • 年龄排序

    摘抄资料:《剑指offer》

  • 剑指offer

    第一题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,...

  • 《剑指offer》

    4.调整数组顺序使奇数位于偶数前面 题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇...

  • 剑指offer

    二维数组中查找数在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到...

  • 剑指offer

    剑指offer题目 1 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。...

  • 剑指offer

    1.链表反转 1、输出倒数第k个数

  • 剑指Offer

    S1 S2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s1...

网友评论

      本文标题:剑指offer第一天

      本文链接:https://www.haomeiwen.com/subject/cgcdiqtx.html