leetcode Flatten Binary Tree to Linked List树

来源:互联网 发布:samlight打标软件 编辑:程序博客网 时间:2024/04/27 19:24

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

click to show hints.

Hints:

If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.

题目意思是把一个二叉树给拍扁,仔细观察下其实就是先序遍历,提示里也说了是先序遍历,最直观的可以相当先把先序遍历的结果存起来,再一个一个接到右边,但总感觉很low,可以直接先序遍历的时候进行操作,同样,如果要接的话肯定要用到额外的一个节点tail,先序遍历的时候每次把当前节点接到tail的右边,然后tail的左边置空,再把当前节点赋给tail。

class Solution {public:TreeNode* tail=NULL;//当前指针void preorder(TreeNode*root){if (root!=NULL){TreeNode*left=root->left;TreeNode*right = root->right;if (tail==NULL)//根节点{tail = root;}else{tail->right = root;tail->left = NULL;tail = root;}preorder(left);preorder(right);}}void flatten(TreeNode* root) {if (!root) return;preorder(root);}};


0 0
原创粉丝点击