博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
之字形层次遍历二叉树
阅读量:7226 次
发布时间:2019-06-29

本文共 2037 字,大约阅读时间需要 6 分钟。

之字形层次遍历二叉树:层次遍历二叉树,并且奇数行为从左到右(根节点为第一层),偶数行为从右到左。 先写一个容易实现的,参照《编程之美》3.10分层遍历二叉树的做法,先编写一个用来处理制定层的函数,然后逐层调用这个函数即可。

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example: Given binary tree{3,9,20,#,#,15,7}, 3 /

9 20 /
15 7

return its zigzag level order traversal as: [ [3], [20,9], [15,7] ]

confused what"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.

OJ's Binary Tree Serialization: The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below. Here's an example: 1 /

2 3 / 4
5 The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:	vector
> zigzagLevelOrder(TreeNode* root){ vector
>result; for (int level = 0;; level++){ vector
q = ZigzagNodeAtLevel(root, level); if (q.size() == 0){ break; } result.push_back(q); } return result; } vector
ZigzagNodeAtLevel(TreeNode* root, int level){ vector
res; if (!root || level<0){ return res; } if (level == 0){ res.push_back(root->val); } // return PrintNodeAtLevel(root->left, level - 1) + PrintNodeAtLevel(root->right, level - 1); vector
left_res = ZigzagNodeAtLevel(root->left, level - 1); vector
right_res = ZigzagNodeAtLevel(root->right, level - 1); if(level%2==1){ for (int i = right_res.size()-1; i>=0; i--){ res.push_back(right_res[i]); } for (int i = left_res.size()-1; i >=0; i--){ res.push_back(left_res[i]); } }else{ for (int i = left_res.size()-1; i >=0; i--){ res.push_back(left_res[i]); } for (int i = right_res.size()-1; i>=0; i--){ res.push_back(right_res[i]); } } return res; }};

转载地址:http://wzufm.baihongyu.com/

你可能感兴趣的文章
进程与线程(三)——进程/线程间通信
查看>>
扩展资源服务器解决oauth2 性能瓶颈
查看>>
数据可视化之下发图实践
查看>>
如何用纯 CSS 创作一个记事本翻页动画
查看>>
微信公众平台生成二维码海报是如何做到的?
查看>>
2017-11-28 在线编程网站对中文代码的支持
查看>>
浅谈k8s cni 插件
查看>>
AES加密算法的JAVA实现
查看>>
面试系列-高并发之synchronized
查看>>
JAVA8给我带了什么——lambda表达
查看>>
我们在编写python代码时应该注意那几件事 !
查看>>
微软工程师认为 Mozilla 也应该拥抱 Chromium
查看>>
论文笔记系列-Neural Architecture Search With Reinforcement Learning
查看>>
使用文本框TextView/EditText的开源库清单
查看>>
通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩
查看>>
手把手教您将 libreoffice 移植到函数计算平台
查看>>
Ansible批量修改root密码(playbook)
查看>>
c#-WPF string,color,brush之间的转换
查看>>
镁客网每周硬科技领域投融资汇总(10.21-10.27),AI芯片创企Syntiant获英特尔等头部企业投资...
查看>>
惰性计算辨析
查看>>