输出二叉树的叶子结点和非叶子结点算法及实现

2019-08-03  本文已影响0人  周末的游戏之旅

输出二叉树的叶子结点

输出二叉树中的叶子节点并无次序要求,因此可以用三种遍历顺序中的任何一种。只是比普通的遍历多了一个条件判断。
判断是否为叶子结点:node.lchrild==null && node.rchrild==null

算法描述

static void PreOrder(TreeNode<string> node)
{
    if (node != null)
    {
        if(node.LChrild1==null&&node.RChirld1==null)
            Console.WriteLine(node.Data);
        PreOrder(node.LChrild1);
        PreOrder(node.RChirld1);
    }
}

输出二叉树的非叶子结点

和输出叶子结点类似,只是把判断条件换一下。
判断是否为非叶子结点:node.lchrild!=null || node.rchrild!=null

算法描述

static void NotPreOrder(TreeNode<string> node)
{
    if (node != null)
    {
        if (node.LChrild1 != null || node.RChirld1 != null)
        {
            Console.WriteLine(node.Data);
        }
        NotPreOrder(node.LChrild1);
        NotPreOrder(node.RChirld1);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读