对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。 给定二叉树的根结点指针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) {
      
      ListNode *p=new ListNode(-1);
      
      ListNode *p1=p;
       
      get1(root,p,dep);
        
      return p1->next;
    }
    void get1(TreeNode* root,ListNode* &list,int dep){
        
        if(dep<=0||root==NULL) return;
        
        if(dep==1){
            ListNode *he=new ListNode(root->val);
            list->next=he;
            list=he;
            return ;
        }
        get1(root->left,list,dep-1);
        get1(root->right,list,dep-1);
    }
};

  

posted @ 2017-07-03 11:00  czcColud  阅读(1328)  评论(0编辑  收藏  举报