Flatten Binary Tree to Linked List
原题链接Flatten Binary Tree to Linked List
给定一个二叉树,将其原地平铺成链式结构(按先序遍历的方式平铺)
虽然结果是先序遍历,但是本题不能直接在二叉树上进行先序遍历操作,原因是题目要求在原内存上做修改,也就是说只能改变节点的left和right指针
遇到二叉树的问题,首先想到的就是递归,所以本题仍然需要利用递归求解
对于某个节点,假设它的左右子树都已经按要求转换完毕,那么只需要将这两个子树拼接在一起即可
代码如下
/**
* 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