LeetCode Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:竞彩足球数据分析 编辑:程序博客网 时间:2024/05/16 10:04

比上一题多两行代码,就是在装入结果集时判断当前层数是奇是偶。这题要是更改遍历的方式,按照左子树右子树,右子树左子树的方式遍历恐怕要很难处理。

// LeetCode_BinaryTreeLevelOrderTraversal.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <vector>#include <algorithm>#include <queue>using namespace std;struct TreeNode {     int val;     TreeNode *left;     TreeNode *right;     TreeNode(int x) : val(x), left(NULL), right(NULL) {} };struct QueNode{int num;TreeNode *pTreeNode;QueNode():num(0),pTreeNode(NULL){}};vector<vector<int> > zigzagLevelOrder(TreeNode *root) {vector<vector<int> >ret;vector<int> oneresult,tempResult;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){if(tempNode.num%2==0)reverse(oneresult.begin(),oneresult.end());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);}}if(lastnum%2!=0)reverse(oneresult.begin(),oneresult.end());ret.push_back(oneresult);oneresult.clear();return ret;}int _tmain(int argc, _TCHAR* argv[]){TreeNode *pa = new TreeNode(1);TreeNode *pb = new TreeNode(2);TreeNode *pc = new TreeNode(3);TreeNode *pd = new TreeNode(4);//TreeNode *pd = NULL;//TreeNode *pe = new TreeNode(5);TreeNode *pf = NULL;//TreeNode *pf = new TreeNode(3);TreeNode *pg = new TreeNode(6);pa->left = pb;pa->right = pc;pb->left = pd;pb->right = pe;pc->left = pf;pc->right = pg;vector<vector<int> >ret;//ret = levelOrder(pa);vector<vector<int> >rret;rret = zigzagLevelOrder(pa);system("pause");return 0;}


0 0
原创粉丝点击