栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetcode 431. 将 N 叉树编码为二叉树

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode 431. 将 N 叉树编码为二叉树

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 一、解题思路
  • 二、代码
    • 1.多叉树转二叉树
    • 2.二叉树转多叉树


  1. 将 N 叉树编码为二叉树

设计一个算法,可以将 N 叉树编码为二叉树,并能将该二叉树解码为原 N 叉树。一个 N 叉树是指每个节点都有不超过 N 个孩子节点的有根树。类似地,一个二叉树是指每个节点都有不超过 2 个孩子节点的有根树。你的编码 / 解码的算法的实现没有限制,你只需要保证一个 N 叉树可以编码为二叉树且该二叉树可以解码回原始 N 叉树即可。


一、解题思路

1.多叉树转换为二叉树
多叉树的头结点为二叉树的头结点,多叉树的孩子依次放在二叉树的左树右节点上

2.二叉树转换为多叉树
二叉树的头结点为多叉树的头结点,二叉树的右树左孩子依次为多叉树的孩子

二、代码 1.多叉树转二叉树

代码如下(示例):

	public TreeNode encode(Node root) {
        if(root==null){
            return null;
        }
        TreeNode head=new TreeNode(root.val);
        head.left=en(root.children);
        return head;
	}
	public TreeNode en(List children){
        TreeNode head=null;
        TreeNode cur=null;
        for(Node child:children){
            TreeNode node=new TreeNode(child.val);
            if(head==null){
                head=node;
            }else{
                cur.right=node;
            }
            cur=node;
            cur.left=en(child.children);
        }
        return head;
	}
2.二叉树转多叉树

代码如下(示例):

	public Node decode(TreeNode root) {
        if(root==null){
            return null;
        }
        Node head=new Node(root.val,de(root.left));
        return head;
    }
    public List de(TreeNode root){
        List ans=new ArrayList<>();
        while(root!=null){
            Node node=new Node(root.val,de(root.left));
            ans.add(node);
            root=root.right;
        }
        return ans;
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号