Re: [閒聊] 每日leetcode

看板Marginalman作者 (神楽めあ的錢包)時間1年前 (2024/03/01 21:43), 編輯推噓2(200)
留言2則, 2人參與, 1年前最新討論串13/1548 (看更多)
我恨指標,指標到底是三小 114. Flatten Binary Tree to Linked List 給一個binary tree,請將這顆binary tree變成以下形式 左子樹永遠是null,右子樹則依照原本tree pre-order去排列 Follow up 請問你可以用o(1)的空間嗎 思路 : 可以選擇dfs並用array去記錄每個node,接著慢慢把它串起來 不過這樣空間就不是o(1)了 有興趣可以自己去想看看o(1)的解法 c code struct TreeNode* dfs(struct TreeNode* node,struct TreeNode* link){ if (node==NULL){ return NULL; } struct TreeNode* right,*left,*temp; right=node->right; left=node->left; link->left=NULL; link->right=node; if (left==NULL && right==NULL){ return node; } temp=dfs(left,node); if (right==NULL){ return temp; } if (left==NULL){ return dfs(right,node); } return dfs(right,temp); } void flatten(struct TreeNode* root) { if (root==NULL){ return ; } struct TreeNode* right=root->right,*temp; temp=dfs(root->left,root); if (temp==NULL){ dfs(right,root); //記得要用right而不是root->right }else{ dfs(right,temp); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.83.6.22 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1709300615.A.A54.html

03/01 21:44, 1年前 , 1F
大師
03/01 21:44, 1F

03/01 21:45, 1年前 , 2F
03/01 21:45, 2F
文章代碼(AID): #1buTk7fK (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1buTk7fK (Marginalman)