zoukankan      html  css  js  c++  java
  • leetcode[156]Binary Tree Upside Down

    Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that shares the same parent node) or empty, flip it upside down and turn it into a tree where the original right nodes turned into left leaf nodes. Return the new root.

    For example:
    Given a binary tree {1,2,3,4,5},
    1
    /
    2 3
    /
    4 5

    return the root of the binary tree [4,5,2,#,#,3,1].
    4
    /
    5 2
      /
     3 1

       TreeNode *upsideDownBinaryTree(TreeNode *root)
       {
           if(root == NULL)
               return root;
     
           stack<TreeNode*> s;    //left child list
           s.push(root);
           TreeNode* cur = root;
           while(cur->left)
           {
               s.push(cur->left);
               cur = cur->left;
           }
           TreeNode* newroot = s.top();
           cur = newroot;
           s.pop();
           while(!s.empty())
           {
               TreeNode* oldfather = s.top();
               s.pop();
               cur->left = oldfather->right;
               cur->right = oldfather;
               oldfather->left=NULL;
               oldfather->right=NULL;
               cur = curr->left;
           }
           return newroot;
       }
  • 相关阅读:
    python基础7
    python基础7
    十大经典预测算法(一)----线性回归
    RNN-循环神经网络
    CNN之经典卷积网络框架原理
    卷积神经网络CNN
    决策树的生成
    欠拟合、过拟合及解决方法
    决策树
    KD树
  • 原文地址:https://www.cnblogs.com/Vae1990Silence/p/4283877.html
Copyright © 2011-2022 走看看