《程序员面试金典》输出单层结点
来源:互联网 发布:上海老年人口 知乎 编辑:程序博客网 时间:2024/04/30 04:30
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:http://www.nowcoder.com/practice/cb6c883b123b44399377d0c71e6ba3ea?rp=1&ru=/ta/cracking-the-coding-interview&qru=/ta/cracking-the-coding-interview/question-ranking
题目描述
对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。
给定二叉树的根结点指针TreeNode* root,以及链表上结点的深度,请返回一个链表ListNode,代表该深度上所有结点的值,请按树上从左往右的顺序链接,保证深度不超过树的高度,树上结点的值为非负整数且不超过100000。
思路
如果之前做过类似的题目,那这道题其实也很简单了,遍历方法无非就是深度优先与广度优先,对于这道题深度优先肯定是不行的,我们知道广度优先是发散性的行走,所以我们可以使用广度优先来完成这道题,将所有同层的结点保存在队列之中。
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*//*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class TreeLevel{public:ListNode* getTreeLevel(TreeNode* root, int dep){// write code hereif(root==nullptr)return nullptr;queue<TreeNode*> Q,tmp;Q.push(root);int cnt = 1;ListNode *newList = new ListNode(0);ListNode *pNode = newList;while(!Q.empty()){if(cnt==dep){while(!Q.empty()){ListNode *newNode = new ListNode(Q.front()->val);Q.pop();pNode->next = newNode;pNode = pNode->next;}}while(!Q.empty()){TreeNode *cur = Q.front();Q.pop();tmp.push(cur->left);tmp.push(cur->right);}while(!tmp.empty()){Q.push(tmp.front());tmp.pop();}++cnt;}return newList->next;}};
0 0
- 《程序员面试金典》输出单层结点
- 程序员面试金典——输出单层结点
- 程序员面试金典——输出单层结点
- 输出单层结点之程序员面试经典
- 程序员面试金典:高度最小的BST、输出单层结点
- 《程序员面试金典》输出单层节点
- 面试算法-----输出单层结点
- 程序员面试金典——输出单层节点
- 程序员面试金典-4.4 输出单层节点
- 程序员面试金典:双栈排序、二叉平衡检查、输出单层节点
- 输出单层结点
- 牛客网 | 输出单层结点
- 输出单层结点
- 输出单层结点
- 输出单层结点
- 输出树单层结点
- 输出单层结点
- 输出单层结点
- centos关掉防火墙以及selinux
- 网易游戏开发笔试题:lisp表达式求值
- 复习排序-冒泡排序
- Java清除session的方法
- sed 简明教程
- 《程序员面试金典》输出单层结点
- VMware 注册码
- Dev RadioGroup 用法(项横排显示、项选中)
- hibernate mysql 乱码的解决方法
- Bag of words and Bag of features
- 第三周项目1 顺序表的基本运算
- 比较好的方式管理我们的应用判断,比如Activity跳转,网络是否连接,判断json....
- C++类型转换
- C++之引用2