加入有以下的一个二叉树:
        1
      /   \
     2      3
    /      /  \
   4      5    6
  /        \
 8          9请问,如何求出节点8和9?
多谢各位同行:)

解决方案 »

  1.   

    我写的代码不是很好,但是实现了。你可以参考一下List<TreeNode> lt = new List<TreeNode>();//记录树的所有没有子节点的结点
            List<TreeNode> lt1 = new List<TreeNode>();//记录最深的结点
            void aaa(TreeNode tn)
            {
                foreach (TreeNode node in tn.Nodes)
                {
                    if (node.Nodes.Count > 0)
                    {
                        aaa(node);
                    }
                    else
                    {
                        lt.Add(node);
                    }
                }
            }
    //调用:
    aaa(treeView1.Nodes[0]);//将树的根节点传进函数
                int max = 0;
                for (int i = 0; i < lt.Count; i++)//遍历所有没有子节点的结点,从中获取最深的结点存进lt1中
                {
                    if (lt[i].Level >= max)
                    {
                        if (lt[i].Level == max)
                        {
                            lt1.Add(lt[i]);
                        }
                        else
                        {
                            lt1.Clear();
                            lt1.Add(lt[i]);
                            max = lt[i].Level;
                        }
                    }
                }
      

  2.   

     List<TreeNode> lt1 = new List<TreeNode>();//记录最深的结点        int max = 0;
            void aaa(TreeNode tn)
            {
                foreach (TreeNode node in tn.Nodes)
                {
                    if (node.Nodes.Count > 0)
                    {
                        aaa(node);
                    }
                    else
                    {
                        if (node.Level >= max)
                        {
                            if (node.Level == max)
                            {
                                lt1.Add(node);
                            }
                            else
                            {
                                lt1.Clear();
                                lt1.Add(node);
                                max = node.Level;
                            }
                        }                   
                    }
                }
            }优化了一下