zoukankan      html  css  js  c++  java
  • LeetCode OJ

    题目:

    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
    Hints:

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

    解题思路:

    依照前序遍历二叉树的方法进行处理。

    代码:

     1 /**
     2  * Definition for binary tree
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     void pre_order(TreeNode * root) {
    13         if (root == NULL) return;
    14 
    15         if (root->left != NULL)    pre_order(root->left);
    16         if (root->right != NULL) pre_order(root->right);
    17 
    18         if (root->left != NULL) {
    19             TreeNode *cur = root->left;
    20             while (cur->right != NULL) {
    21                 cur = cur->right;
    22             }
    23             cur->right = root->right;
    24             root->right = root->left;
    25             root->left = NULL;
    26         }
    27         return;
    28     }
    29     void flatten(TreeNode *root) {
    30         pre_order(root);
    31     }
    32 };
  • 相关阅读:
    1. 加载文件的方法
    9. 位运算符
    8. 条件(条目,三元)运算符
    3. PHP比较运算符
    hdu3336 Count the string
    Codeforces Round #228 (Div. 2)
    hdu4288 Coder(线段树单点更新)
    hdu2852 KiKi's K-Number
    poj1195
    poj2299
  • 原文地址:https://www.cnblogs.com/dongguangqing/p/3728023.html
Copyright © 2011-2022 走看看