楼主: 熟狗脸
跳转到指定楼层
上一主题 下一主题
收起左侧

脸家上门经

全局:
按照楼主的提示写了一下代码 请指正 由于工作原因用的c# 不好意思

补充内容 (2017-9-7 14:43):
namespace CopyTreeNode
{
    class CopyTreeNode
    {
        static void Main(string[] args)
        {
            NeryTreeNode root = new NeryTreeNode(' ');
            NeryTreeNode b= new NeryTr...
回复

使用道具 举报

全局:
namespace CopyTreeNode
{
    class CopyTreeNode
    {
        static void Main(string[] args)
        {
            NeryTreeNode root = new NeryTreeNode(' ');
            NeryTreeNode b= new NeryTreeNode('b');
            NeryTreeNode c = new NeryTreeNode('c');
            NeryTreeNode d = new NeryTreeNode('d');
            NeryTreeNode e = new NeryTreeNode('e');
            NeryTreeNode f = new NeryTreeNode('f');
            NeryTreeNode g = new NeryTreeNode('g');
            NeryTreeNode h = new NeryTreeNode('h');
            NeryTreeNode i = new NeryTreeNode('i');
            NeryTreeNode j = new NeryTreeNode('j');
            NeryTreeNode k = new NeryTreeNode('k');
            NeryTreeNode l = new NeryTreeNode('l');
            root.children[0] = b;
            root.children[1] = c;
            root.children[2] = d;
            root.children[3] = e;
            b.children[0] = f;
            b.children[1] = g;
            b.children[2] = h;
            b.children[3] = i;
            c.children[1] = g;
            c.children[2] = k;

            NeryTreeNode copyRoot = new NeryTreeNode(' ');
            NeryTreeNode B = new NeryTreeNode('B');
            NeryTreeNode C = new NeryTreeNode('C');
            NeryTreeNode D = new NeryTreeNode('D');
            NeryTreeNode E = new NeryTreeNode('E');
            NeryTreeNode F = new NeryTreeNode('F');
            NeryTreeNode G = new NeryTreeNode('G');
            NeryTreeNode H = new NeryTreeNode('H');
            NeryTreeNode I = new NeryTreeNode('I');
            NeryTreeNode J = new NeryTreeNode('J');
            NeryTreeNode K = new NeryTreeNode('K');
            NeryTreeNode L = new NeryTreeNode('L');
            copyRoot.children[0] = B;
            copyRoot.children[1] = C;
            copyRoot.children[2] = D;
            copyRoot.children[3] = E;
            B.children[0] = F;
            B.children[1] = G;
            B.children[2] = H;
            B.children[3] = I;
            C.children[1] = G;
            C.children[2] = K;

            var result1 = new CopyTreeNode().GetCopy(root, copyRoot, h);
            var result2 = new CopyTreeNode().GetCopy(root, copyRoot, d);
            var result3 = new CopyTreeNode().GetCopy(root, copyRoot, k);
        }

        public NeryTreeNode GetCopy(NeryTreeNode root, NeryTreeNode copyRoot, NeryTreeNode from)
        {
            var result = new List<string>();
            GetPath(root, from, new StringBuilder(), result);
            if (result.Count == 0)
            {
                return null;
            }
            string path = result[0];
            NeryTreeNode current = copyRoot;
            for (int i = 0; i < path.Length; i++)
            {
                int number = path[i] - '0';
                current = current.children[number];
            }
            return current;
        }

        public void GetPath(NeryTreeNode root, NeryTreeNode target, StringBuilder sb, List<string> result)
        {
            if (root == null)
            {
                return;
            }
            if (root == target)
            {
                result.Add(sb.ToString());
            }
            var children = root.children;
            for (int i = 0; i < children.Length; i++)
            {
                if (children[i] != null)
                {
                    sb.Append(i);
                    GetPath(children[i], target, sb, result);
                    sb.Remove(sb.Length - 1, 1);
                }
            }
        }
    }

    public class NeryTreeNode
    {
        public char val;
        public NeryTreeNode[] children;
        public NeryTreeNode(char v)
        {
            val = v;
            children = new NeryTreeNode[4];
        }
    }
}
按照楼主的提示写了一下代码 请指正 由于工作原因用的c# 不好意思
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表