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的位置,最后是递归函数需要处理的语句。

浙公网安备 33010602011771号