leetcode【DFS】-----114. Flatten Binary Tree to Linked List(二叉树展开为链表)

1、题目描述

2、分析

       首先分析,应该从最底下的节点来开始,所以就是递归应该是从右子树开始,之后再递归左子树。接下来就是需要处理的递归语句,需要处理的就是指针的指向,我们需要用一个变量来保存每次传进来的节点,先将其设为NULL,之后再更改其他指针。

3、代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    void flatten(TreeNode* root) {
        if(root==NULL) return ;
        flatten(root->right);
        flatten(root->left);
        root->right=pre;
        root->left=NULL;
        pre=root;
    }
    private:
    TreeNode* pre=NULL;
};

4、相关知识点

        DFS需要考虑几个问题,首先是边界条件,其次是DFS的位置,最后是递归函数需要处理的语句。

posted @ 2019-07-14 17:18  吾之求索  阅读(89)  评论(0)    收藏  举报