zoukankan      html  css  js  c++  java
  • 按层次打印二叉树

    题目:
    输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
    例如输入
    7
    8
    / \
    6 10
    / \ / \
    5 7 9 11
    输出8 6 10 5 7 9 11。

    二叉树节点的数据结构:

    1 struct BinaryTreeNode
    2 {
    3     int nData;
    4 
    5     BinaryTreeNode *lChild;
    6     BinaryTreeNode *rChild;
    7 };

    思路:按层次遍历一般用队列很容易实现,直接上代码:

     1 void LevelTraversalBinaryTree(BinaryTreeNode *root)
     2 {
     3     assert (root != NULL);
     4 
     5     BinaryTreeNode *Queue[MAX];
     6     int nHead = -1;
     7     int nTail = -1;
     8 
     9     // 根节点首先入栈
    10     Queue[++nTail] = root;
    11     while (nHead < nTail)
    12     {
    13         // 访问根节点
    14         ++nHead;
    15         cout << Queue[nHead]->nData << " ";
    16 
    17         // 要求层次访问顺序从左到右,因此做孩子先入队列
    18         if (Queue[nHead]->lChild != NULL)
    19         {
    20             // 将根节点的左孩子加入到队列
    21             Queue[++nTail] = Queue[nHead]->lChild;
    22         }
    23 
    24         if (Queue[nHead]->rChild != NULL)
    25         {
    26             // 将根节点的右孩子加入队列
    27             Queue[++nTail] = Queue[nHead]->rChild;
    28         }
    29     }
    30 }

    给出一个测试结果:

  • 相关阅读:
    C++数字与字符串相互转化
    NextDate问题
    Mac使用host屏蔽某指定网站
    Pycharm里面使用anaconda配置环境
    Logisim
    XML有关知识
    Mac环境下的Tomcat
    Allow apps downloaded from Anywhere
    寻找两数之和
    最大子序列
  • 原文地址:https://www.cnblogs.com/ldjhust/p/3053339.html
Copyright © 2011-2022 走看看