zoukankan      html  css  js  c++  java
  • 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   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.

    开始想的太简单了,很困,也没认真思考,直接看的别人怎么做的,这道题还是很考验思维的,解法和以前那些深度优先算法不一样,思考清楚了之后,题目也就好解了,很久没用递归解题了,导致都忘了可以用递归来解了,很多的关于树的题都可以考虑用递归来解·····································

    代码如下:

    /**
     * Definition for a binary tree node.
     * 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* leftpart=root->left;
                TreeNode* rightpart=root->right;
                root->left=NULL;
                root->right=leftpart;
                TreeNode* temp=root->right;
                while(temp->right!=NULL)
                {
                    temp=temp->right;
                }
                temp->right=rightpart;
            }
            flatten(root->right);
        }
    };
  • 相关阅读:
    勿忘心安
    设△ABC的内角A,B,C,所对的边分别为a,b,c,且acosB-bcosA=3/5c,则tan(A-B)的最大值为
    P1011 车站
    第一天
    P1134 阶乘问题
    P3152 正整数序列
    某数论
    DO YOU WANNA BUILD A SNOW MAN ?
    luogu P1579 哥德巴赫猜想(升级版)
    紫书 习题 10-25 UVa 1575 (有重复元素的全排列+暴搜)
  • 原文地址:https://www.cnblogs.com/qiaozhoulin/p/4758871.html
Copyright © 2011-2022 走看看