#include
#include
typedef struct node node;
//查詢待插入點的父節點
node * findinsertloc(node *p1, float insertvalue)
else
} else
else }}
return p1;
}node * buildtree(float arr, int len)
;會引發指標亂指
//根據待插入點和待插入點父節點的值的大小,確定應該插入父節點的左子樹還是右子樹
if (father->value < arr[loc]) else
}return rootnode;
}void inorder(node *p2)
}void preorder(node *p2)
}int main(int argc, char **ar**)
;int arrlen = sizeof(arr1)/sizeof(arr1[0]);
node *root = buildtree(arr1, arrlen);
//printf("\nend -- %f", root->left->value);
inorder(root);
return 0;
}note:
1、通過node descendant = 方式建立節點,會導致指標亂指。具體原因暫不詳;
2、陣列的長度需要在陣列建立的函式中,通過sizeof(arr)/sizeof(arr[0])計算。如果傳遞arr給函式,在被呼叫函式中通過上述表示式計算,長度計算有誤。
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 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 解釋 輸入為 ...