题目来自于LeetCode
https://leetcode.com/problems/flatten-binary-tree-to-linked-list/
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1 / 2 5 / \ 3 4 6The flattened tree should look like:
1 2 3 4 5 6Tree Depth-first Search
/** * Definition for binary tree * 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 ; if(root->left!=NULL) { TreeNode *tmp=root->right; TreeNode *cur=root->left; root->right=root->left; while(cur->right!=NULL) cur=cur->right; cur->right=tmp; root->left=NULL; } flatten(root->right); } };
Flatten Binary Tree to Linked List Total Accepted: 45093 Total Submissions: 156588
原文:http://blog.csdn.net/zhouyelihua/article/details/45340797