博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Binary Tree Level Order Traversal
阅读量:5372 次
发布时间:2019-06-15

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

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]]

 

confused what "{1,#,2,3}" means? 

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}".

思路:这道题是二叉树的层次遍历算法,简单来说就是借用队列来实现二叉树的层次遍历,使用循环方法。每次将一层的结点放入队列中,将一层的结点遍历其左右结点,然后pop这一层的结点。

/** * 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
> levelOrder(TreeNode *root) { vector
> result; queue
pTree; if(root==NULL) return result; pTree.push(root); int count=1; vector
temp; while(!pTree.empty()) { temp.clear(); int temp_count=0; for(int i=0;i
val); if(tn->left!=NULL) { pTree.push(tn->left); temp_count++; } if(tn->right!=NULL) { pTree.push(tn->right); temp_count++; } } count=temp_count; result.push_back(temp); } return result; }};

看了其他人的思路,使用递归方法实现的:

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {private:    vector
> result; public: void traversal(TreeNode *root,int depth) { if(root==NULL) return; if(result.size()>depth) { result[depth].push_back(root->val); } else { vector
data; data.push_back(root->val); result.push_back(data); } traversal(root->left,depth+1); traversal(root->right,depth+1); } vector
> levelOrder(TreeNode *root) { result.clear(); traversal(root,0); return result; }};

 

 

 

转载于:https://www.cnblogs.com/awy-blog/p/3608712.html

你可能感兴趣的文章
uva 111 History Grading(lcs)
查看>>
Python学习week2-python介绍与pyenv安装
查看>>
php判断网页是否gzip压缩
查看>>
一个有意思的js实例,你会吗??[原创]
查看>>
sql server中bit字段实现取反操作
查看>>
Part3_lesson2---ARM指令分类学习
查看>>
jQuery拖拽原理实例
查看>>
JavaScript 技巧与高级特性
查看>>
Uva 11729 Commando War
查看>>
增强学习(一) ----- 基本概念
查看>>
ubuntu下USB连接Android手机
查看>>
C# 语句 分支语句 switch----case----.
查看>>
反射获取 obj类 的属性 与对应值
查看>>
表单中的readonly与disable的区别(zhuan)
查看>>
win10下安装配置mysql-8.0.13--实战可用
查看>>
周记2018.8.27~9.2
查看>>
MySQL中 1305-FUNCTION liangshanhero2.getdate does not exit 问题解决
查看>>
python序列化和json
查看>>
mongodb
查看>>
SSH-struts2的异常处理
查看>>