二叉搜尋樹

2021-09-08 17:03:59 字數 1379 閱讀 5941

二叉搜尋樹答案正確,可惜執行時間超標

#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 解釋 輸入為 ...