出不了門,在家做題
分別用前中後三種遍歷方式,先遞迴再迴圈,首先第乙個是數的定義。
function
treenode
=(val)
=>
前序
const
preorder
=(root)
=>
const
preorder
=(root)
=>
return res
}
中序
const
innerorder
=(root)
=>
const
innerorder
=(root)
=>
let node = stack.
pop(
) res.
push
(node.val)
p = node.right
}return res
}
後序
function
backorder
=(root)
=>
function
backorder
= root =>
let node = stack.
slice(-
1)[0
]if(node.right &&
!dic.
has(node.right)
)else
}return res
}
換個方式,先用遞迴求兩個深度,在使用迴圈
function
maxdepth
(root)
function
mindepth
(root)
else
}
接著使用dfs迴圈
function
maxdepth
(root)
level++
}return level
}
function
mindepth
(root)
level++
}return level
}
還是迴圈和遞迴
function
closedans
(root, p, q)
if(front.right)}}
while
(q)while
(p)}
function
closedans
(root, p, q)
由於二叉搜尋樹的特性,我們可以使用這種遞迴:
function
searchclosedans
(root, p, q)
當然也有迴圈的方式
function
searchclosedans
(root, p, q)
}
幾個二叉樹和二叉搜尋樹的題目
首先用遞迴實現 function mirrior root if root return true return help root.left,root.right 接著用迴圈實現 function mirrior root return true 這道題有一點很坑的是最長路徑不一定經過根節點。fu...
二叉樹題目
struct treenode treenode left treenode right 遞迴解法 如果二叉樹為空,節點個數為0 如果二叉樹不為空,那麼節點個數 左子樹結點個數 右子樹結點個數 1 int getnodenum treenode root 如果二叉樹為空,二叉樹的深度為0 如果二叉樹...
二叉樹題目
include include includeusing namespace std void print postorder int n,char pre,char in n代表節點個數,pre前 in 中 post後,不建樹用void int main void return 0 根據後中求層次...