From 3b19508d21a7a77e374446106e9fd750cc02d7b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E7=A8=8B=E4=BA=91?= Date: Tue, 8 Dec 2020 19:39:59 +0800 Subject: [PATCH] add problem leetcode 431 --- .../Code03_EncodeNaryTreeToBinaryTree.java | 86 +++++++++++++++++++ ...yTree.java => Code04_PrintBinaryTree.java} | 2 +- ...MaxWidth.java => Code05_TreeMaxWidth.java} | 2 +- ...sorNode.java => Code06_SuccessorNode.java} | 2 +- ...rFolding.java => Code07_PaperFolding.java} | 2 +- 5 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 src/class07_11/Code03_EncodeNaryTreeToBinaryTree.java rename src/class07_11/{Code03_PrintBinaryTree.java => Code04_PrintBinaryTree.java} (97%) rename src/class07_11/{Code04_TreeMaxWidth.java => Code05_TreeMaxWidth.java} (98%) rename src/class07_11/{Code05_SuccessorNode.java => Code06_SuccessorNode.java} (98%) rename src/class07_11/{Code06_PaperFolding.java => Code07_PaperFolding.java} (93%) diff --git a/src/class07_11/Code03_EncodeNaryTreeToBinaryTree.java b/src/class07_11/Code03_EncodeNaryTreeToBinaryTree.java new file mode 100644 index 0000000..67aa777 --- /dev/null +++ b/src/class07_11/Code03_EncodeNaryTreeToBinaryTree.java @@ -0,0 +1,86 @@ +package class07_11; + +import java.util.ArrayList; +import java.util.List; + +// 本题测试链接:https://leetcode.com/problems/encode-n-ary-tree-to-binary-tree +public class Code03_EncodeNaryTreeToBinaryTree { + + // 提交时不要提交这个类 + public static class Node { + public int val; + public List children; + + public Node() { + } + + public Node(int _val) { + val = _val; + } + + public Node(int _val, List _children) { + val = _val; + children = _children; + } + }; + + // 提交时不要提交这个类 + public static class TreeNode { + int val; + TreeNode left; + TreeNode right; + + TreeNode(int x) { + val = x; + } + } + + // 只提交这个类即可 + class Codec { + // Encodes an n-ary tree to a binary tree. + public TreeNode encode(Node root) { + if (root == null) { + return null; + } + TreeNode head = new TreeNode(root.val); + head.left = en(root.children); + return head; + } + + private TreeNode en(List children) { + TreeNode head = null; + TreeNode cur = null; + for (Node child : children) { + TreeNode tNode = new TreeNode(child.val); + if (head == null) { + head = tNode; + } else { + cur.right = tNode; + } + cur = tNode; + cur.left = en(child.children); + } + return head; + } + + // Decodes your binary tree to an n-ary tree. + public Node decode(TreeNode root) { + if (root == null) { + return null; + } + return new Node(root.val, de(root.left)); + } + + public List de(TreeNode root) { + List children = new ArrayList<>(); + while (root != null) { + Node cur = new Node(root.val, de(root.left)); + children.add(cur); + root = root.right; + } + return children; + } + + } + +} diff --git a/src/class07_11/Code03_PrintBinaryTree.java b/src/class07_11/Code04_PrintBinaryTree.java similarity index 97% rename from src/class07_11/Code03_PrintBinaryTree.java rename to src/class07_11/Code04_PrintBinaryTree.java index 955e726..64aeb7e 100644 --- a/src/class07_11/Code03_PrintBinaryTree.java +++ b/src/class07_11/Code04_PrintBinaryTree.java @@ -1,6 +1,6 @@ package class07_11; -public class Code03_PrintBinaryTree { +public class Code04_PrintBinaryTree { public static class Node { public int value; diff --git a/src/class07_11/Code04_TreeMaxWidth.java b/src/class07_11/Code05_TreeMaxWidth.java similarity index 98% rename from src/class07_11/Code04_TreeMaxWidth.java rename to src/class07_11/Code05_TreeMaxWidth.java index 4aad4f3..0c6d613 100644 --- a/src/class07_11/Code04_TreeMaxWidth.java +++ b/src/class07_11/Code05_TreeMaxWidth.java @@ -4,7 +4,7 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.Queue; -public class Code04_TreeMaxWidth { +public class Code05_TreeMaxWidth { public static class Node { public int value; diff --git a/src/class07_11/Code05_SuccessorNode.java b/src/class07_11/Code06_SuccessorNode.java similarity index 98% rename from src/class07_11/Code05_SuccessorNode.java rename to src/class07_11/Code06_SuccessorNode.java index 6440ce7..5133db6 100644 --- a/src/class07_11/Code05_SuccessorNode.java +++ b/src/class07_11/Code06_SuccessorNode.java @@ -1,6 +1,6 @@ package class07_11; -public class Code05_SuccessorNode { +public class Code06_SuccessorNode { public static class Node { public int value; diff --git a/src/class07_11/Code06_PaperFolding.java b/src/class07_11/Code07_PaperFolding.java similarity index 93% rename from src/class07_11/Code06_PaperFolding.java rename to src/class07_11/Code07_PaperFolding.java index 349cd58..7cd7230 100644 --- a/src/class07_11/Code06_PaperFolding.java +++ b/src/class07_11/Code07_PaperFolding.java @@ -1,6 +1,6 @@ package class07_11; -public class Code06_PaperFolding { +public class Code07_PaperFolding { public static void printAllFolds(int N) { printProcess(1, N, true);