赞
踩
如何一层一层的保存节点?
借助队列结构,保存每一层保存过的元素,size记录当前层大小,决定当前层弹出多少元素;弹出一个元素,就在后续加入他的左右子元素;一层结束,size==0后,队列中全为下一层元素,此时更新size,开始进行该层的弹出,以及下一层的压入
代码实现:
queue<TreeNode*> que; if(root != NULL) que.push(root); //root不为空才加,为空不加 // vector<vector<int>> result; //遍历 while(!que.empyt()){ //中止条件,如果队列里面没有元素了,就遍历结束 //首先记录当前层节点个数 int size = que.size(); //定义一维数组放当前层的元素 vector<int> vec; //开始遍历当前层的元素 while(size--){ TreeNode* node = que.front(); que.pop(); //记录结果 vec.push_back(node->val); //更新该节点的左右孩子 if(node->left) que.push(node->left); if(node->right) que.push(node->right); } //将上面遍历一层得到的一维数组放到树的二维数组中 result.push_back(vec); }
102.二叉树的层序遍历
107.二叉树的层次遍历II
199.二叉树的右视图
637.二叉树的层平均值
vector<Node*> Children
中的所有节点515.在每个树行中找最大值
116.填充每个节点的下一个右侧节点指针
117.填充每个节点的下一个右侧节点指针II
104.二叉树的最大深度
111.二叉树的最小深度
&&
而不是||
temp1, temp2
,然后将左右子节点指向nullptr
,再分别赋值调换Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。