Flatten Binary Tree to Linked List

来源:互联网 发布:神户钢铁造假 知乎 编辑:程序博客网 时间:2024/05/16 11:15

题目描述:

Given a binary tree, flatten it to a linked list in-place.

For example,
Given

         1        / \       2   5      / \   \     3   4   6

The flattened tree should look like:
   1    \     2      \       3        \         4          \           5            \             6
解题思路:

使用先序遍历,并利用一个额外的变量last保存遍历过的结点中的最后一个,
在先序遍历的过程中更新last即可

AC代码如下:

class Solution {public:void flatten(TreeNode* root) {if (root == NULL) return;TreeNode* last = NULL;preorderTravel(root, last);}void preorderTravel(TreeNode* root, TreeNode*& last){if (root == NULL) return;TreeNode* left = root->left;TreeNode* right = root->right;if (last != NULL){last->right = root;}root->left=NULL;last = root;preorderTravel(left, last);preorderTravel(right, last);}};



0 0
原创粉丝点击