zoukankan      html  css  js  c++  java
  • 程序员面试金典 -- 输出单层结点

    程序员面试金典 -- 输出单层结点

    题目描述

    对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。

    给定二叉树的根结点指针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:
        void Get(TreeNode *root, int dep, ListNode* &t){
            if(dep == 1){
                ListNode *tmp = new ListNode(root->val); 
                t->next = tmp; 
                t = tmp; 
            }else{
                if(root->left){
                    Get(root->left, dep-1, t); 
                }
                if(root->right){
                    Get(root->right, dep-1, t); 
                }
            }
        }
        
        ListNode* getTreeLevel(TreeNode* root, int dep) { 
            if(dep <= 0 || root == NULL ){
                return NULL; 
            }
            
            ListNode *ans = new ListNode(-1); 
            ListNode *t = ans; 
            Get(root, dep, t); 
            return ans->next; 
            
            // write code here  
    
            /* 
            if(root == NULL){
                return NULL; 
            }
            int tmp_int; 
            ListNode *ans; 
            ListNode *tt = ans; 
            
            queue<TreeNode *> q;
            queue<int> qint; 
            
            q.push(root); qint.push(1); 
            
            while(!q.empty()){
                TreeNode *tmp = q.front(); q.pop(); 
                int tmp_int = qint.front(); qint.pop(); 
                
                if(dep == tmp_int){
                    ListNode *t = new ListNode(tmp->val); 
                    tt->next = t; 
                    tt = t; 
                }
                if(tmp->left){
                    q.push(tmp->left); qint.push(tmp_int + 1); 
                }
                if(tmp->right){
                    q.push(tmp->right); qint.push(tmp_int + 1); 
                }
            }  
            return ans->next; */  
    
        }
    };
    

      

  • 相关阅读:
    .net core EF 入门笔记Code First
    Windows环境下安装MongodDB
    Ueditor1.4.3.3 富文本编辑器在图片不显示问题
    .net IIS网站部署Host文件简单应用
    .Net初学Less的安装与部署
    EF+MVC动态Lamda表达式拼接(学习笔记二)
    EF+MVC动态Lamda表达式拼接(学习笔记)
    区块链从入门到放弃
    Unity3D的update和FixedUpdate
    忽雷太极拳十三式
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/7137030.html
Copyright © 2011-2022 走看看