首页 > 其他分享 >BM26 求二叉树的层序遍历

BM26 求二叉树的层序遍历

时间:2023-02-03 15:36:51浏览次数:58  
标签:node 层序 TreeNode BM26 back tmpResult 二叉树 root append

思路:

逐层访问,通过访问当前层来得到下一层的节点。结束标志是下一层没有节点。

Go

package main import . "nc_tools" /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */
/** * * @param root TreeNode类 * @return int整型二维数组 */ func levelOrder( root *TreeNode ) [][]int { // write code here result := make([][]int,0) if root == nil{ return result } curSet := make([]*TreeNode,0) curSet = append(curSet,root)   tmpResult := make([]int,0) for _,node := range curSet{ tmpResult = append(tmpResult,node.Val) } result = append(result,tmpResult)
for len(curSet) > 0 { next := make([]*TreeNode,0) tmpResult = make([]int,0) for _,node := range curSet{ if node.Left != nil{ next = append(next,node.Left) tmpResult = append(tmpResult,node.Left.Val) } if node.Right != nil{ next = append(next,node.Right) tmpResult = append(tmpResult,node.Right.Val) } } if len(tmpResult) > 0{ result = append(result,tmpResult) } curSet = next }
return result


} 运行时间 8ms   占用内存 1168KB  

C++

/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */
#include <iterator> class Solution { public: /** * * @param root TreeNode类 * @return int整型vector<vector<>> */ vector<vector<int> > levelOrder(TreeNode* root) { // write code here vector<vector<int>> res; if(root == nullptr){ return res; } vector<TreeNode*> curLevel; curLevel.push_back(root);
vector<int> tmpResult; tmpResult.push_back(root->val); res.push_back(tmpResult);
while(curLevel.size() > 0){ tmpResult = vector<int>(); vector<TreeNode*> nextLevel;
for(auto &ele: curLevel){ if(ele->left != nullptr){ tmpResult.push_back(ele->left->val); nextLevel.push_back(ele->left); } if(ele->right != nullptr){ tmpResult.push_back(ele->right->val); nextLevel.push_back(ele->right); } } if(tmpResult.size() > 0){ res.push_back(tmpResult); }   curLevel = nextLevel; } return res; } }; 运行时间 5ms   占用内存 516KB   https://clang.llvm.org/extra/clang-tidy/checks/modernize/loop-convert.html

标签:node,层序,TreeNode,BM26,back,tmpResult,二叉树,root,append
From: https://www.cnblogs.com/starter-songudi/p/17089406.html

相关文章

  • 小白科普丨何为树、二叉树和森林?
    摘要:本文为大家带来树、二叉树和森林的表示及如何进行相互转换。本文分享自华为云社区《树、二叉树和森林的表示及相互转换》,作者:1+1=王。树的基本概念树的定义:树是n(n......
  • 【DFS】LeetCode 105. 从前序与中序遍历序列构造二叉树
    题目链接105.从前序与中序遍历序列构造二叉树思路先序遍历的顺序是根左右,中序遍历的顺序是左根右,所以在preorder数组中的首元素一定是当前树的树根,再从inorder数组......
  • 【DFS】LeetCode 236. 二叉树的最近公共祖先
    题目链接236.二叉树的最近公共祖先思路代码classSolution{publicTreeNodelowestCommonAncestor(TreeNoderoot,TreeNodep,TreeNodeq){if(roo......
  • uva839 (二叉树+递归)
    题目链接:​​点击这里​​题目大意就是根据干杠平衡原理,判断题目所给出的数据组成的天平能否平衡。注意,此天平可能包含子天平。输入时,如果w为0,则表示包含子天平,子天平按照......
  • 力扣654 最大二叉树
    题目:给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建:创建一个根节点,其值为nums中的最大值。递归地在最大值左边的子......
  • 力扣106 从中序与后序遍历序列构造二叉树
    题目:给定两个整数数组inorder和postorder,其中inorder是二叉树的中序遍历,postorder是同一棵树的后序遍历,请你构造并返回这颗二叉树。示例:输入:inorder=[9......
  • 二叉树的不同形态
    题目简介给定二叉树T(树深度H<=10,深度从1开始,结点个数N<1024,结点编号1~N)的层次遍历序列和中序遍历序列,输出T从左向右叶子结点以及二叉树先序和后序遍历序列。输入格式输......
  • LeetCode 对称二叉树算法题解 All In One
    LeetCode对称二叉树算法题解AllInOne对称二叉树原理图解101.SymmetricTree对称二叉树https://leetcode.com/problems/symmetric-tree/https://leetcode.c......
  • leetcode-543二叉树直径
    //leetcodesubmitregionbegin(Prohibitmodificationanddeletion)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;......
  • 【DFS】LeetCode 124. 二叉树中的最大路径和
    题目链接124.二叉树中的最大路径和思路一个子树内部的最大路径和=左子树提供的最大路径和+根节点值+右子树提供的最大路径和。即dfs(root.left)+root.val+dfs(r......