加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Binary Tree Level Order Traversal

发布时间:2020-12-14 03:45:30 所属栏目:大数据 来源:网络整理
导读:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树:? [3,9,20,null,15,7] , 3 / 9 20 / 15 7 返回其层次遍历结果: [ [3],[9,20],[15,7]] 1、递归版 /* * * Definition for a binary tree node. * struct

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

例如:
给定二叉树:?[3,9,20,null,15,7],

    3
   /   9  20
    /     15   7

返回其层次遍历结果:

[
  [3],[9,20],[15,7]
]

1、递归版
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x),left(NULL),right(NULL) {} * }; */
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> result; levelorder(root,0,result); return result; } void levelorder(TreeNode* root,int level,vector<vector<int>>& result) { if (!root) return; if(level == result.size()) result.push_back({}); result[level].push_back(root->val); if(root->left)levelorder(root->left,level+1,result); if(root->right)levelorder(root->right,result); } };

?

2、迭代版
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x),right(NULL) {} * }; */
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int> > res; if (root == NULL) return res; queue<TreeNode*> q; q.push(root); while (!q.empty()) { vector<int> oneLevel; int size = q.size(); for (int i = 0; i < size; ++i) { TreeNode *node = q.front(); q.pop(); oneLevel.push_back(node->val); if (node->left) q.push(node->left); if (node->right) q.push(node->right); } res.push_back(oneLevel); } return res; } };
 

?

?参考:https://www.cnblogs.com/grandyang/p/4051321.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读