首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >深度优先搜索

深度优先搜索
EN

Stack Overflow用户
提问于 2014-09-06 01:37:45
回答 2查看 2.7K关注 0票数 0

我开始使用堆栈编写代码,如下所示:

代码语言:javascript
复制
void Foo(TreeNode root)
    {
        Stack nodes = new Stack();
        nodes.Push(root);

        while (nodes.Count > 0)
        {
            TreeNode node = (TreeNode) nodes.Pop();
            Console.WriteLine(node.Text);
            for (int i = node.Nodes.Count - 1; i >= 0; i--)
                nodes.Push(node.Nodes[i]);
        }
    }

但是,没有堆栈,我不知道我应该做什么。

我试过这个。是对的吗?有人能建议我。

代码语言:javascript
复制
void Foo(TreeNode root)
{
   if(root == null) return;

    System.out.print(root.Value + "\t");
    root.state = State.Visited;

    //for every child
    for(Node n: root.getChild())
    {
        //if childs state is not visited then recurse
        if(n.state == State.Unvisited)
        {
            dfs(n);
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-06 01:47:47

用途:

代码语言:javascript
复制
Console.WriteLine(node.Text);
for (Int i = 0; i < node.Nodes.Count; i++)
    Foo(root.Nodes[i]);
票数 0
EN

Stack Overflow用户

发布于 2014-09-06 01:57:17

代码语言:javascript
复制
namespace ConsoleApplication3
{
    using System.Collections.Generic;

    public class Tree
    {
        public int Value { get; set; }

        public List<Tree> TreeNode
        {
            get;
            set;
        }
        public Tree()
        {
            this.TreeNode = new List<Tree>();
        }
    }

    public class Program
    {
        public static void Main()
        {
            Program pro = new Program();
            Tree tree = new Tree();
            tree.TreeNode.Add(new Tree() { Value = 1 });
            tree.TreeNode.Add(new Tree() { Value = 2 });
            tree.TreeNode.Add(new Tree() { Value = 3 });
            tree.TreeNode.Add(new Tree() { Value = 4 });
            pro.DepthFirstSearch(2, tree);
        }

        private Tree DepthFirstSearch(int searchValue, Tree root)
        {
            if (searchValue == root.Value)
            {
                return root;
            }

            Tree treeFound = null;
            foreach (var tree in root.TreeNode)
            {
                treeFound = DepthFirstSearch(searchValue, tree);
                if (treeFound != null)
                {
                    break;
                }
            }

            return treeFound;

        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25696014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档