Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf2c0874

Browse files
authored
Merge pull requestneetcode-gh#2264 from AkifhanIlgaz/0783
Create: 0789-minimum-distance-between-two-bst-nodes
2 parents6c6523b +26ccfda commitf2c0874

4 files changed

+138
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package main
2+
3+
import"math"
4+
5+
funcmain() {
6+
7+
}
8+
9+
typeTreeNodestruct {
10+
Valint
11+
Left*TreeNode
12+
Right*TreeNode
13+
}
14+
15+
funcminDiffInBST(root*TreeNode)int {
16+
varprev*TreeNode
17+
res:=math.MaxInt
18+
19+
vardfsfunc(*TreeNode)
20+
21+
dfs=func(node*TreeNode) {
22+
ifnode!=nil {
23+
dfs(node.Left)
24+
25+
ifprev!=nil {
26+
res=min(res,node.Val-prev.Val)
27+
}
28+
prev=node
29+
30+
dfs(node.Right)
31+
}
32+
}
33+
34+
dfs(root)
35+
returnres
36+
}
37+
38+
funcmin(a,bint)int {
39+
ifa<b {
40+
returna
41+
}
42+
returnb
43+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
*@param {TreeNode} root
11+
*@return {number}
12+
*/
13+
varminDiffInBST=function(root){
14+
let[prev,res]=[null,Number.MAX_VALUE];
15+
16+
functiondfs(node){
17+
if(node){
18+
dfs(node.left);
19+
20+
if(prev){
21+
res=Math.min(res,node.val-prev.val);
22+
}
23+
prev=node;
24+
25+
dfs(node.right);
26+
}
27+
}
28+
29+
dfs(root);
30+
31+
returnres;
32+
};
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
use std::cell::RefCell;
2+
use std::rc::Rc;
3+
4+
typeOptNode =Option<Rc<RefCell<TreeNode>>>;
5+
6+
implSolution{
7+
pubfnmin_diff_in_bst(root:OptNode) ->i32{
8+
letmut min = i32::MAX;
9+
letmut prev =None;
10+
11+
Self::dfs(root,&mut prev,&mut min);
12+
min
13+
}
14+
15+
fndfs(root:Option<Rc<RefCell<TreeNode>>>,prev:&mutOption<i32>,min:&muti32){
16+
ifletSome(node) = root{
17+
let node = node.borrow();
18+
19+
Self::dfs(node.left.clone(), prev, min);
20+
21+
ifletSome(prev) = prev{
22+
*min =(*min).min(node.val -*prev)
23+
}
24+
*prev =Some(node.val);
25+
26+
Self::dfs(node.right.clone(), prev, min);
27+
}
28+
}
29+
}
30+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
classTreeNode{
2+
val:number;
3+
left:TreeNode|null;
4+
right:TreeNode|null;
5+
constructor(val?:number,left?:TreeNode|null,right?:TreeNode|null){
6+
this.val=val===undefined ?0 :val;
7+
this.left=left===undefined ?null :left;
8+
this.right=right===undefined ?null :right;
9+
}
10+
}
11+
12+
export{};
13+
14+
functionminDiffInBST(root:TreeNode|null):number{
15+
letprev:TreeNode|null=null;
16+
letres=Number.MAX_VALUE;
17+
18+
functiondfs(node:TreeNode|null):void{
19+
if(node){
20+
dfs(node.left);
21+
22+
if(prev){
23+
res=Math.min(res,node.val-prev.val);
24+
}
25+
prev=node;
26+
27+
dfs(node.right);
28+
}
29+
}
30+
31+
dfs(root);
32+
returnres;
33+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp