题目描述
对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。
给定二叉树的根结点指针TreeNode* root,以及链表上结点的深度,请返回一个链表ListNode,代表该深度上所有结点的值,请按树上从左往右的顺序链接,保证深度不超过树的高度,树上结点的值为非负整数且不超过100000。
Solution 1(采用中序遍历的递归方法)
//可以采用前序遍历,到达一定深度就开始存储节点值
/*
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) {
if(root==nullptr) return nullptr;
ListNode *head=new ListNode(-1);
ListNode *p=head;
int count=1;
seek(root,p,count,dep);
return head->next;
}
private:
void seek(TreeNode *root,ListNode *&ptr,i