LeetCode OJ--Binary Tree Level Order Traversal
http://oj.leetcode.com/problems/binary-tree-level-order-traversal/
树的层序遍历,使用队列
由于树不是满的,还要分出每一层来,刚开始给缺少的节点用dummy节点代替,结果超时了。
vector<vector<int> > levelOrder(TreeNode *root) {
        vector<vector<int> > ans;
        if(root == NULL)
            return ans;
        int num = ,num2 = ;
        queue<TreeNode *> myQueue;
        myQueue.push(root);
        TreeNode *nodeFront;
        TreeNode *dummy = new TreeNode(-);
        vector<int> onePiece;
        while(!myQueue.empty())
        {
            nodeFront = myQueue.front();
            myQueue.pop();
            num--;
            if(nodeFront != dummy)
            {
                onePiece.push_back(nodeFront->val);
                if(nodeFront->left)
                    myQueue.push(nodeFront->left);
                else
                    myQueue.push(dummy);
                if(nodeFront->right)
                    myQueue.push(nodeFront->right);
                else
                    myQueue.push(dummy);
            }
            else
            {
                myQueue.push(dummy);
                myQueue.push(dummy);
            }
            if(num == )
            {
                if(onePiece.empty())
                break;
                ans.push_back(onePiece);
                onePiece.clear();
                num2 = num2*;
                num = num2;
            }
        }
        return ans;
    }
改进的话,对缺失的节点进行计数,则计算出下一层应该有多少个节点来,如下。
    vector<vector<int> > levelOrder(TreeNode *root) {
        vector<vector<int> > ans;
        if(root == NULL)
            return ans;
        int num = ,num2 = ,nullNum = ,nullNumAcc = ;
        queue<TreeNode *> myQueue;
        myQueue.push(root);
        TreeNode *nodeFront;
        vector<int> onePiece;
        while(!myQueue.empty())
        {
            nodeFront = myQueue.front();
            myQueue.pop();
            num--;
            onePiece.push_back(nodeFront->val);
            if(nodeFront->left)
                myQueue.push(nodeFront->left);
            else
                nullNum++;
            if(nodeFront->right)
                myQueue.push(nodeFront->right);
            else
                nullNum++;
            if(num == )
            {
                if(onePiece.empty())
                    break;
                ans.push_back(onePiece);
                onePiece.clear();
                num2 = num2*;
                nullNumAcc = nullNumAcc* + nullNum;
                num = num2 - nullNumAcc;
                nullNum = ;
            }
        }
        return ans;
    }
LeetCode OJ--Binary Tree Level Order Traversal的更多相关文章
- Java for LeetCode 107 Binary Tree Level Order Traversal II
		Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ... 
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
		翻译 给定一个二叉树,返回从下往上遍历经过的每一个节点的值. 从左往右,从叶子到节点. 比如: 给定的二叉树是 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7 返回它从下 ... 
- [LeetCode] 107. Binary Tree Level Order Traversal II 二叉树层序遍历 II
		Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ... 
- LeetCode(32)-Binary Tree Level Order Traversal
		题目: LeetCode Premium Subscription Problems Pick One Mock Articles Discuss Book fengsehng 102. Binary ... 
- [LeetCode] 102. Binary Tree Level Order Traversal 二叉树层序遍历
		Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ... 
- 【leetcode】Binary Tree Level Order Traversal I & II
		Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ... 
- LeetCode之Binary Tree Level Order Traversal  层序遍历二叉树
		Binary Tree Level Order Traversal 题目描述: Given a binary tree, return the level order traversal of its ... 
- (二叉树 BFS) leetcode 107. Binary Tree Level Order Traversal II
		Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ... 
- 【题解】【BT】【Leetcode】Binary Tree Level Order Traversal
		Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ... 
- leetcode 题解:Binary Tree Level Order Traversal (二叉树的层序遍历)
		题目: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ri ... 
随机推荐
- php代码压缩
			php代码压缩,除可以使用token_get_all进行压缩之外,还可以使用系统自带的函数 php_strip_whitespace (PHP 5) php_strip_whitespace — ... 
- python3和Python2的区别
			一.print函数 python2 的 print 声明已经被 print() 函数取代了,这意味着我们必须包装我们想打印在小括号中的对象 二.通过input()解析用户的输入 python3中inp ... 
- 【Python学习之六】高阶函数2(map、reduce、filter、sorted)
			3.filter filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素.相当于一 ... 
- 05tar命令详解
			tar 命令用于对文件进行打包压缩或解压,格式为"tar [选项][文件]".  在Linux 系统中,常见的文件格式比较多,其中主要使用的是 .tar 或者 .tar.gz 或 ... 
- Leetcode(204) Count Primes
			题目 Description: Count the number of prime numbers less than a non-negative number, n. Credits: Speci ... 
- 水题:51Nod1432-独木舟
			1432 独木舟 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 Problem Description n个人,已知每个人体重.独木舟承重固定,每只独木舟最多坐两 ... 
- debian安装之后使用android手机上网
			安装debian的过程中,没有连接网线.因为路由器在客厅,电脑在卧室,拖条长长的线很不方便. 断网安装完成之后,通过usb连上i9250. 在i9250上,执行以下操作: “设置”--->“更多 ... 
- IDEA-常用插件,使用FindBugs寻找bug,代码分析
			bug无处不在,但是我们总希望少一点bug. 最近发现了一款好用的寻找bug的插件,特此记下. 一.安装 路径:File-->Settings-->Plugins-->Browse ... 
- 鼠标在窗口中的坐标转换到 canvas 中的坐标
			鼠标在窗口中的坐标转换到 canvas 中的坐标 由于需要用到isPointInPath函数,所以必须得将鼠标在窗口中的坐标位置转换到canvas画布中的坐标,今天发现网上这种非常常见的写法其 ... 
- 基于2.9.6vue-cli初始化webpack工程
			前天做了组内的分享 讲了些webpack的东西 整个流程以及build文件夹内webpack相关的一些js所有的代码 每行代码什么意思 有什么作用 都做了很详细的标明. webpack是3.6的 今天 ... 
