• Level-order Traversal(c语言函数指针样例)


    Write a routine to list out the nodes of a binary tree in “level-order”. List the root, then nodes at depth 1, followed by nodes at depth 2, and so on. You must do this in linear time.
    Format of functions:

    void Level_order ( Tree T, void (*visit)(Tree ThisNode) );

    where void (*visit)(Tree ThisNode) is a function that handles ThisNode being visited by Level_order, and Tree is defined as the following:

    typedef struct TreeNode *Tree;
    struct TreeNode {
        ElementType Element;
        Tree  Left;
        Tree  Right;
    };

    Sample program of judge:

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MaxTree 10 /* maximum number of nodes in a tree */
    typedef int ElementType;
    
    typedef struct TreeNode *Tree;
    struct TreeNode {
        ElementType Element;
        Tree  Left;
        Tree  Right;
    };
    
    Tree BuildTree(); /* details omitted */
    void PrintNode( Tree NodePtr )
    {
       printf(" %d", NodePtr->Element);
    }
    
    void Level_order ( Tree T, void (*visit)(Tree ThisNode) );
    
    int main()
    {
        Tree T = BuildTree();
        printf("Level-order:");
        Level_order(T, PrintNode);
        return 0;
    }
    
    /* Your function will be put here */

    Sample Output (for the tree shown in the figure):
    这里写图片描述

    Level-order: 3 5 6 1 8 10 9

    代码:

    void Level_order ( Tree BT,void (*visit)(Tree ThisNode))
    {
        if(BT == NULL)return;
        struct TreeNode *queue[100];
        int head,tail;
        head = tail = 0;
        queue[tail++] = BT;
        while(head!=tail)
        {
            (*visit)(queue[head]);
            if(queue[head]->Left!=NULL)queue[tail++] = queue[head]->Left;
            if(queue[head]->Right!=NULL)queue[tail++] = queue[head]->Right;
            head++;
        }
    }
  • 相关阅读:
    Leetcode 814. 二叉树剪枝
    Leetcode 104. 二叉树的最大深度
    Leetcode 617. 合并二叉树
    Leetcode 226. 翻转二叉树
    Leetcode 654.最大二叉树
    【Leetcode】413. Arithmetic Slices
    【Leetcode】128. Longest Consecutive Sequence
    【Leetcode】605. Can Place Flowers
    【Leetcode】647. Palindromic Substrings
    高可用架构
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9514214.html
Copyright © 2020-2023  润新知