算法设计与应用基础: 第六周(2)

    xiaoxiao2021-03-25  108

    102. Binary Tree Level Order Traversal

    Add to List Description Submissions Solutions Total Accepted: 160933Total Submissions: 421518Difficulty: MediumContributor: LeetCode

    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,null,null,15,7],

    解题思路:主要是用树中的层次遍历,为了方便引入了新的结构体levelnode来记录当前节点所在的层数(le值)。

    犯的错误,没有一开始判断root是否为空导致程序直接崩溃,要记住树的题先判断树是否为空。

    struct levenode { TreeNode *node; int le; levenode(TreeNode *n = 0, int l = 0) : node(n), le(l) {} }; class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int> >Temp(1000); vector<vector<int> >ans; if(root==0) return ans; levenode begin(root,0); queue<levenode> res; res.push(begin); while(res.size()) { levenode temp=res.front(); res.pop(); if(temp.node->left!=NULL) { levenode push(temp.node->left,temp.le+1); res.push(push); } if(temp.node->right) { levenode push(temp.node->right,temp.le+1); res.push(push); } Temp[temp.le].push_back(temp.node->val); } for(int i=0;i<1000;i++) { if(Temp[i].size()) ans.push_back(Temp[i]); else break; } return ans; } }; 总结:一开始忘了树的深度怎么计算所以预设了vector的大小为1000,这样是取巧的方法,后来复习了求树的深度的方法:递归,二元判断符返回1+左右子树深度大的。

    转载请注明原文地址: https://ju.6miu.com/read-24238.html

    最新回复(0)