[PHP]算法- 判断是否为二叉搜索树的后序遍历序列的PHP实现
|
<div class="cnblogs_code"> ,思路:<span style="color: #0000ff">function judge(<span style="color: #800080">$seq,<span style="color: #800080">$start,<span style="color: #800080">$end<span style="color: #000000">){ <span style="color: #0000ff">if(<span style="color: #0000ff">empty(<span style="color: #800080">$seq)) <span style="color: #0000ff">return <span style="color: #0000ff">false<span style="color: #000000">; <span style="color: #008000">//<span style="color: #008000">跳出条件 <span style="color: #0000ff">if(<span style="color: #800080">$start>=<span style="color: #800080">$end) <span style="color: #0000ff">return <span style="color: #0000ff">true<span style="color: #000000">; <span style="color: #800080">$root=<span style="color: #800080">$seq[<span style="color: #800080">$end<span style="color: #000000">]; <span style="color: #800080">$index=<span style="color: #800080">$end<span style="color: #000000">; <span style="color: #008000">//<span style="color: #008000">找出第一个大于root的位置 <span style="color: #0000ff">for(<span style="color: #800080">$i=<span style="color: #800080">$start;<span style="color: #800080">$i<<span style="color: #800080">$end;<span style="color: #800080">$i++<span style="color: #000000">){ <span style="color: #0000ff">if(<span style="color: #800080">$seq[<span style="color: #800080">$i]>=<span style="color: #800080">$root<span style="color: #000000">){ <span style="color: #800080">$index=<span style="color: #800080">$i<span style="color: #000000">; <span style="color: #0000ff">break<span style="color: #000000">; } } <span style="color: #008000">//<span style="color: #008000">查找右子树中如果有小于root的返回false <span style="color: #0000ff">for(<span style="color: #800080">$i=<span style="color: #800080">$index;<span style="color: #800080">$i<<span style="color: #800080">$end;<span style="color: #800080">$i++<span style="color: #000000">){ <span style="color: #0000ff">if(<span style="color: #800080">$seq[<span style="color: #800080">$i]<<span style="color: #800080">$root<span style="color: #000000">){ <span style="color: #0000ff">return <span style="color: #0000ff">false<span style="color: #000000">; } } <span style="color: #008000">//<span style="color: #008000">短路语法递归调用 <span style="color: #0000ff">return judge(<span style="color: #800080">$seq,<span style="color: #800080">$index-1) && judge(<span style="color: #800080">$seq,<span style="color: #800080">$index,<span style="color: #800080">$end-1<span style="color: #000000">); } <span style="color: #0000ff">function VerifySquenceOfBST(<span style="color: #800080">$sequence<span style="color: #000000">) <span style="color: #800080">$seq=<span style="color: #0000ff">array(1,2,3<span style="color: #000000">); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
