zoukankan      html  css  js  c++  java
  • 请实现两个函数,分别用来序列化和反序列化二叉树

    import java.util.LinkedList;
    import java.util.Queue;
    public class Solution {
         String Serialize(TreeNode root) {
    		   StringBuilder sb = new StringBuilder();
    		   if(root==null) {
    			   sb.append("#,");
    			   return sb.toString();
    		   }
    		   sb.append(String.valueOf(root.val));
    		   sb.append(',');
    		   sb.append(Serialize(root.left));
    		   sb.append(Serialize(root.right));
    		   return sb.toString();
    		   
    		  
    	   }
    	   TreeNode Deserialize(String str) {
    	        String[] values = str.split(",");
    	        Queue<String> queue = new LinkedList<>();
    	        for(int i=0;i<values.length;i++) {
    	        	queue.offer(values[i]);
    	        }
    	        return reconPreOrder(queue);
    	   }
       
    	private TreeNode reconPreOrder(Queue<String> queue) {
    		String value = queue.poll();
    		if(value.equals("#")) {
    			return null;
    		}
    		TreeNode head = new TreeNode(Integer.valueOf(value));
    		head.left = reconPreOrder(queue);
    		head.right = reconPreOrder(queue);
    		return head;
    	}
    }
    

      

  • 相关阅读:
    3月6日
    2月28日
    2月23日
    2月20日
    2月19日
    2月18日
    2月17日
    2月16日
    2月15日
    面试算法题——硬币找零
  • 原文地址:https://www.cnblogs.com/figsprite/p/10676365.html
Copyright © 2011-2022 走看看