zoukankan      html  css  js  c++  java
  • LeetCode:Binary Tree Level Order Traversal

    题目描写叙述:

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

    For example:
    Given binary tree {3,9,20,#,#,15,7},

        3
       / 
      9  20
        /  
       15   7
    

    return its level order traversal as:

    [
      [3],
      [9,20],
      [15,7]
    ]


    思路:利用队列层序遍历二叉树。在队列中增加一个flag指针。每次遍历到flag指针时就表示当前这一层遍历结束。


    代码:

    vector<vector<int> > Solution::levelOrder(TreeNode *root)
    {
        vector<vector<int> > result;
        vector<int> sequence;
        TreeNode * flag = new TreeNode(0);
        queue<TreeNode *> treenode_queue;
        if(root == NULL)
            return result;
        treenode_queue.push(root);
        treenode_queue.push(flag);
        while(treenode_queue.size() >= 1)
        {
            TreeNode * node = treenode_queue.front();
            treenode_queue.pop();
            if(node == flag)
            {
                result.push_back(sequence);
                sequence.clear();
                if(treenode_queue.empty())
                    break;
                treenode_queue.push(flag);
            }
            else
            {
                sequence.push_back(node->val);
                if(node->left != NULL)
                    treenode_queue.push(node->left);
                if(node->right != NULL)
                    treenode_queue.push(node->right);
            }
        }
        return result;
    }
    


  • 相关阅读:
    实验四
    密码破解技术
    222
    111
    6
    5
    4
    第三次
    第二次
    第一次
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7078146.html
Copyright © 2011-2022 走看看