求二叉树上某一深度上的所有节点,并用链表表示这些节点

问题描述

给定一颗二叉树,创建包含有某一深度上所有节点的链表。
即输入一颗二叉树和要求的深度,返回一个链表。
也就是求二叉树上某一深度上的所有节点

namespace TreeToLinkList
{
    class Tree
    {
        public string data;
        public Tree left;
        public Tree right;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Tree tree = new Tree()
            {
                data = "a",
                left = new Tree() { data = "b" },
                right = new Tree()
                {
                    data = "c",
                    left = new Tree() { data = "d" },
                    right = new Tree() { data = "e" },
                }
            };
            LinkedList ls = GetTreeLevel(tree, 3);

            LinkedListNode lsNode = ls.First;
            while (lsNode != null)
            {
                Console.WriteLine(lsNode.Value);
                lsNode = lsNode.Next;
            }
        }

        static LinkedList GetTreeLevel(Tree root,int depth)
        {
            LinkedList list = new LinkedList();

            if (root == null || depth < 0)
            {
                return null;
            }
            GetListNode(root, depth, list);
            return list;
        }

        static void GetListNode(Tree node, int depth,LinkedList list)
        {
            if (node == null) return;
            if (depth == 1)
            {
                list.AddLast(node.data);
                return;
            }
            GetListNode(node.left, depth - 1, list);
            GetListNode(node.right, depth - 1, list);
        }
    }
}

你可能感兴趣的:(求二叉树上某一深度上的所有节点,并用链表表示这些节点)