代码改变世界

leetcode - Flatten Binary Tree to Linked List

2013-04-12 16:23  张汉生  阅读(159)  评论(0编辑  收藏  举报

题目描述:点击此处

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
  TreeNode * getLastNode(TreeNode *root){
    if (root == NULL)
      return NULL;
    TreeNode * left = root->left, *right = root->right;
    root->left = NULL;
    root->right = NULL;
    TreeNode * link = root;
    if (left !=NULL){
      root->right = left;
      link = getLastNode(left);
    }
    if (right != NULL){
      link->right = right;
      link = getLastNode(right);
    }
    return link;
  }
  void flatten(TreeNode *root) {
    // Start typing your C/C++ solution below
    // DO NOT write int main() function
    getLastNode(root);
  }
};