#include #include #include #include using namespace std;
struct node;
node *root,*nil;
void insert(int k)else
}z->p=y;
if (y==nil)else else
}}void midt(node *u)
midt(u->l);
cout<<" "midt(u->r);
}void pret(node *u)
cout<<" "midt(u->l);
midt(u->r);
}int main() else if (s=="print")else
}
因為這個while迴圈只會無腦的找到比當前結點大或者小的子節點
而他忽略了對當前節點父節點與要插入值的判斷 如果加入這個判斷的話 那麼 二叉樹就會平衡很多,否則 他在某種資料下 只會單向生長 淦 希望繼續努力 加油
下面說一說二叉樹的的搜尋
#include #include #include #include using namespace std;
struct node;
node *root,*nil;
void insert(int k)else
}z->p=y;
if (y==nil)else else
}}void midt(node *u)
midt(u->l);
cout<<" "midt(u->r);
}void pret(node *u)
cout<<" "midt(u->l);
midt(u->r);
}node * find(node * u, int t)else
}return u;
}int main() else
}else if (s=="insert")else if (s=="print")else
}return u;
}
這個函式 還是很容易懂的 和學長說的 二叉樹的狂搜爆搜 不太一樣
革命尚未成功同志還需努力
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...
二叉搜尋樹 修剪二叉搜尋樹
第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...
樹 二叉樹 二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...