LeetCode Binary Tree Level Order Traversal II

来源:互联网 发布:windows 微软雅黑字体 编辑:程序博客网 时间:2024/06/14 06:47

如果说直接给这道题,没有前面那些题的铺垫,没准我会晕一阵子,有了前面的题就好办了,只是多一行代码。这题也说明了,有些题刚开始真是无从下手,或者按照题目要求的直接求很难求,比如这题,怎么才能先遍历子节点然后遍历父节点呢?这么想肯定晕,但是若能想到按照常规的遍历方法,只是结果集存在容器里,然后对容器里的元素处理就可以解出题目了。

vector<vector<int> > levelOrderBottom(TreeNode *root) {vector<vector<int> >ret;vector<int> oneresult;if(root==NULL)return ret;queue<QueNode> que;QueNode qn;qn.num = 0;qn.pTreeNode = root;que.push(qn);QueNode tempNode,tempLeftNode,tempRightNode;int lastnum = 0;while(!que.empty()){tempNode = que.front();que.pop();if (lastnum!=tempNode.num){ret.push_back(oneresult);oneresult.clear();oneresult.push_back(tempNode.pTreeNode->val);lastnum = tempNode.num;}elseoneresult.push_back(tempNode.pTreeNode->val);if (tempNode.pTreeNode->left){tempLeftNode.num = tempNode.num+1;tempLeftNode.pTreeNode = tempNode.pTreeNode->left;que.push(tempLeftNode);}if (tempNode.pTreeNode->right){tempRightNode.num = tempNode.num+1;tempRightNode.pTreeNode = tempNode.pTreeNode->right;que.push(tempRightNode);}}ret.push_back(oneresult);oneresult.clear();reverse(ret.begin(),ret.end());return ret;}


0 0
原创粉丝点击