<style> /* 頁面整體設定 */ html, body, .ui-content { background: #2C2C2C; color: #00FFD5; } /* tag顏色設定 */ .markdown-body h6 { font-size: .85em; color: #A5FFE5; -webkit-animation: discolor 5s linear infinite, glint 2s ease infinite; animation: discolor 5s linear infinite, glint 2s ease infinite; /*animation: discolor 5s linear infinite, glint 2s ease infinite;*/ } /* 設定右上角留言按鈕 */ #comment-app .open-comments { background: transparent; } .btn-default { background: transparent; border-color: #A5FFE599; -webkit-animation: discolor 5s linear infinite, glint 2s ease infinite; animation: discolor 5s linear infinite, glint 2s ease infinite; } .btn-default:hover { background: transparent; } .ui-comment-app .open-comments .btn.ui-open-comments { color: #A5FFE599; } .ui-comment-app .open-comments .btn.ui-open-comments:hover { color: #A5FFE5; } /* 設置愛心、收藏、小鈴鐺按鈕 */ .community-button { color: #A5FFE580; -webkit-animation: discolor 5s linear infinite, glint 2s ease infinite; animation: discolor 5s linear infinite, glint 2s ease infinite; } .community-button:hover { color: #A5FFE5; background: transparent; } /* 設定 code 模板 */ .markdown-body code, .markdown-body tt { background-color: #ffffff36; } .markdown-body .highlight pre, .markdown-body pre { color: #ddd; background-color: #00000080; } .hljs-tag { color: #ddd; } .token.operator { background-color: transparent; } /* h1, h2 樣式 */ .markdown-body h1, .markdown-body h2 { border-bottom-color: #ffffff80; text-shadow: 3px 3px 3px #009B67; } /* 設定小目錄的背景顏色 */ .ui-toc-dropdown { background-color: #2C2C2C; } /* 設定行動裝置中,小目錄按鈕 */ .ui-toc-label.btn { background: linear-gradient(180deg, #2BE8CF60 0%, #2B83E860 100%); color: #ffffff90; } .ui-toc-label.btn:hover { background: linear-gradient(180deg, #2BE8CF90 0%, #2B83E890 100%); color: #ffffff; } /* 設定小目錄內連結 */ .ui-toc-dropdown .nav>li>a, .toc-menu>a { color: #D4F9FF; font-weight: bold; } .ui-toc-dropdown .nav>li>a:focus, .ui-toc-dropdown .nav>li>a:hover { color: #00FFD5; border-left: 1px solid #00FFD5; } .ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a { color: #00FFD5; border-left: 1px solid #00FFD5; /* -webkit-animation: discolor 5s linear infinite, glint 2s ease infinite; animation: discolor 5s linear infinite, glint 2s ease infinite; */ } .toc-menu>a:focus, .toc-menu>a:hover { color: #00FFD5; } /* 回到最上面的按鈕 */ .markdown-body a > .fa-chevron-up { position: fixed; bottom: 20px; right: 20px; padding: 4px; border-radius: 4px; color: #fff; background: linear-gradient(180deg, #2BE8CF60 0%, #2B83E860 100%); } .markdown-body a:hover > .fa { background: linear-gradient(180deg, #2BE8CF95 0%, #2B83E895 100%); -webkit-animation: discolor 5s linear infinite, glint 2s ease infinite; animation: discolor 5s linear infinite, glint 2s ease infinite; } /* 右邊滾動軸 */ ::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #2BE8CF60 0%, #2B83E860 100%); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, #2BE8CF95 0%, #2B83E895 100%); } /* 設定連結 */ a, .open-files-container li.selected a { color: #89FFF8; } a:hover, .open-files-container li.selected a:hover { color: #89FFF8; } /* 上面的名字顏色修改 */ .text-gray-900 { --tw-text-opacity: 1; color: #95FFFF; animation: discolor 5s linear infinite, glint 2s ease infinite; } /* 下面的名字顏色修改 */ /* 這個會修改到最下面的HackMD 但不會閃爍*/ .footer a { color: #95FFFF; } .text-black-brand { --tw-text-opacity: 1; animation: discolor 5s linear infinite, glint 2s ease infinite; } /* 動畫 */ @keyframes discolor { 0%, 100% {filter: hue-rotate(0);} 50% {filter: hue-rotate(180deg);} } </style> ###### tags: `LeetCode` # 783. Minimum Distance Between BST Nodes ## 題目 找任兩個node最小的差。 <a href = "https://leetcode.com/problems/minimum-distance-between-bst-nodes/description/"><i class=" fa fa-bug"></i> 題目連結</a> ## 程式碼 用InOrder是因為跑的順序會由小到大。 把所有node存起來 ```cpp= class Solution { public: int minDiffInBST(TreeNode* root) { findAllNode(root); //用InOrder找所有node的值 int dif = INT_MAX; const int n = node.size(); for(int i = 1;i < n;i ++) //找最小的差 dif = min(dif, node[i] - node[i - 1]); return dif; } private: vector<int> node; void findAllNode(TreeNode* root) //InOrder { if(root == NULL) return; findAllNode(root->left); //左 node.push_back(root->val); //中 findAllNode(root->right); //右 } }; ``` 存前一個node(參考官方解答) ```cpp= class Solution { public: int minDiffInBST(TreeNode* root) { dif = INT_MAX; prev = NULL; getMin(root); //InOrder return dif; } private: TreeNode* prev; int dif; void getMin(TreeNode* root) { if(root == NULL) return; getMin(root->left); //左 if(prev) //如果有前一個 dif = min(dif, root->val - prev->val); //算現在node和前一個的差 prev = root; //更新prev getMin(root->right); //右 } }; ``` ## DATE 2023/02/17