검지offer--서열화 두 갈래 나무
제목 설명/* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ import java.util.ArrayList; public class Solution { String Serialize(TreeNode root) { if(root==null) return ""; StringBuilder sb = new StringBuilder(); ArrayList<TreeNode> queue = new ArrayList<TreeNode>(); ArrayList<String> result = new ArrayList<String>(); queue.add(root); result.add(root.val+""); int low = 0; int high = 1; while(low<high){ TreeNode t = queue.get(low); if(t.left!=null){ result.add(t.left.val+""); queue.add(t.left); high++; }else{ result.add("#"); } if(t.right!=null){ result.add(t.right.val+""); queue.add(t.right); high++; }else{ result.add("#"); } low++; } int i; for(i=result.size()-1;i<result.size();i--){ if(!result.get(i).endsWith("#")) break; } for(int j=0;j<=i;j++){ sb.append(result.get(j)).append(","); } return sb.deleteCharAt(sb.length()-1).toString(); } TreeNode Deserialize(String str) { if(str.length()==0) return null; String[] chars = str.split(","); ArrayList<TreeNode> queue = new ArrayList<TreeNode>(); TreeNode t = new TreeNode(Integer.valueOf(chars[0])); queue.add(t); int low = 0; for(int i=0;i<chars.length && low<queue.size();){ t = queue.get(low); if(i+1<chars.length){ i++; TreeNode left = null; if(!("#".equals(chars[i]))){ left = new TreeNode(Integer.valueOf(chars[i])); queue.add(left); } t.left = left; } if(i+1<chars.length){ i++; TreeNode right = null; if(!"#".equals(chars[i])){ right = new TreeNode(Integer.valueOf(chars[i])); queue.add(right); } t.right = right; } low++; } return queue.get(0); } }
두 함수를 실현하십시오. 각각 서열화와 반서열화 두 갈래 나무에 쓰십시오
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.