二叉树的层次遍历

    xiaoxiao2021-04-15  31

    描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)

    样例:给一棵二叉树 {3,9,20,#,#,15,7} :   3  / \ 9  20   /  \  15   7 返回他的分层遍历结果: [   [3],   [9,20],   [15,7] ]

    解题思路:这个题与普通的层序遍历之间的区别在于,要把每一层的节点分别输出。我们可以把每一层的节点都放到一个vector向量里面,然后再把每一层的vector都放入到一个总的vector里面。

    实现代码:

    /**  * Definition of TreeNode:  * public class TreeNode {  *     public int val;  *     public TreeNode left, right;  *     public TreeNode(int val) {  *         this.val = val;  *         this.left = this.right = null;  *     }  * }  */     class Solution {     /**      * @param root: The root of binary tree.      * @return: Level order a list of lists of integer      */     public: vector<vector<int>> levelOrder(TreeNode *root) {         // write your code here     vector<vector<int>> result;         if (root == NULL) {             return result;         }                  queue<TreeNode *> Q;         Q.push(root);         while (!Q.empty()) {             int size = Q.size();             vector<int> level;                          for (int i = 0; i < size; i++) {                 TreeNode *head = Q.front(); Q.pop();                 level.push_back(head->val);                 if (head->left != NULL) {                     Q.push(head->left);                 }                 if (head->right != NULL) {                     Q.push(head->right);                 }             }                          result.push_back(level);         }                  return result;     } };

    做题感想:首先会用到队列的知识,对于每一个节点首先让它入队然后再出队。其次怎样把每一层的节点放入到vector当中,当时写的时候出来好多错误,不能正确的判断,怎样到一层的结束。后来费了老鼻子劲才写对。

    转载请注明原文地址: https://ju.6miu.com/read-671702.html

    最新回复(0)