输出单层结点
来源:互联网 发布:伤感的网络歌曲有哪些 编辑:程序博客网 时间:2024/05/01 09:55
题目描述
对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。
给定二叉树的根结点指针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){const int Max=100000;ListNode *pHead=new ListNode(-1);//ListNode *pNode=pHead;TreeNode* p_tree[Max];//循环队列;int front=0,rear=0,num_p;//num_p用来记录当前层的最后一个节点的位置int level=1;//用来记录当前遍历树的层数;if(root!=NULL){p_tree[rear]=root;rear=(rear+1)%Max; num_p=rear;}while(level<dep){while(front<num_p)//当前层的子节点全部入队列{TreeNode* tmp=p_tree[front]; front=(front+1)%Max;//出队列;if (tmp->left!=NULL){p_tree[rear]=tmp->left;rear=(rear+1)%Max; }if (tmp->right!=NULL){p_tree[rear]=tmp->right;rear=(rear+1)%Max; }}num_p=rear;level++;//层次加一;}if(level==dep){while(front<rear){ListNode* tmpNode=new ListNode(p_tree[front]->val);front=(front+1)%Max;pNode->next=tmpNode;pNode=tmpNode;}pNode->next=NULL;return pHead->next;}}};
0 0
- 输出单层结点
- 牛客网 | 输出单层结点
- 输出单层结点
- 输出单层结点
- 输出单层结点
- 输出树单层结点
- 输出单层结点
- 输出单层结点
- 输出单层结点
- 第九天 输出单层结点
- 面试算法-----输出单层结点
- 《程序员面试金典》输出单层结点
- 输出单层结点之程序员面试经典
- 程序员面试金典——输出单层结点
- 程序员面试金典——输出单层结点
- 程序员面试金典:高度最小的BST、输出单层结点
- 单层输出节点
- 输出单层节点
- IOS [[Tool Instance] getUser]引发的血案
- java成员的初始化 --thinking in java学习笔记(三)
- HDU 3268 Columbus’s bargain
- App启动闪屏黑屏问题
- 黑马程序员-C-switch语句
- 输出单层结点
- java多线程之三
- UML总结(对九种图的认识和如何使用Rational Rose 画图)
- Android笔记 4
- QT与Visual Studio 2010整合的例子
- 二分图最大匹配
- Java并发编程:Lock
- cookie 和session 的区别详解
- VLAD局部特征聚合描述符