二叉搜尋樹答案正確,可惜執行時間超標
#include#include#define queuemaxsize 50 //
定義佇列陣列長度
#define stackmaxsize 20 //
定義棧陣列長度
typedef
intelemtype;
struct
btreenode
;elemtype* find(struct btreenode*bst, elemtype x)
}elemtype* find1(struct btreenode*bst, elemtype x)
return
null;
}void insert(struct btreenode**bst, elemtype x)
else
if (x < (*bst)->data) //
向左子樹中完成插入運算
insert(&((*bst)->left), x);
else
insert(&((*bst)->right), x); //
向右子樹中完成插入運算
}void insert1(struct btreenode**bst, elemtype x)
//迴圈之後parent儲存的是待插入位置的雙親結點
p = malloc(sizeof(struct
btreenode));
p->data =x;
p->left = p->right =null;
if (parent == null) //
若樹為空,作為根結點插入
*bst =p;
else
if (x < parent->data) //
鏈結到左指標域
parent->left =p;
else
parent->right = p; //
鏈結到右指標域
}void createbstree(struct btreenode** bst, elemtype a, int
n)void inorder_int(struct btreenode* bt)//
中序遍歷,元素型別為int
}void clearbtree(struct btreenode** bt)//
清除二叉樹,使之變為一棵空樹
}int main()//
其中用到二叉樹操作的函式都基本沒變,只是元素型別換為int
inorder_int(bst);
printf("\n
");//system("pause");
clearbtree(&bst);
return0;
}
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 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 解釋 輸入為 ...