使用MATLAB代码实现已知一组数据,如何构建一个二叉排序树
时间: 2023-06-18 07:05:10 浏览: 204
下面是使用 MATLAB 实现构建二叉排序树的示例代码:
```matlab
% 定义二叉树节点
classdef BinaryTreeNode
properties
data % 节点数据
left % 左子节点
right % 右子节点
end
methods
function obj = BinaryTreeNode(data)
obj.data = data;
obj.left = [];
obj.right = [];
end
end
end
% 定义二叉排序树
classdef BinarySearchTree
properties
root % 根节点
end
methods
function obj = BinarySearchTree()
obj.root = [];
end
% 插入节点
function insert(obj, data)
if isempty(obj.root)
obj.root = BinaryTreeNode(data);
else
obj.root = obj.insertNode(obj.root, data);
end
end
% 递归插入节点
function node = insertNode(obj, node, data)
if isempty(node)
node = BinaryTreeNode(data);
elseif data < node.data
node.left = obj.insertNode(node.left, data);
elseif data > node.data
node.right = obj.insertNode(node.right, data);
end
end
% 中序遍历二叉排序树
function inorderTraversal(obj, node)
if ~isempty(node)
obj.inorderTraversal(node.left);
disp(node.data);
obj.inorderTraversal(node.right);
end
end
end
end
% 测试代码
data = [5, 3, 7, 2, 4, 6, 8];
bst = BinarySearchTree();
for i = 1:length(data)
bst.insert(data(i));
end
bst.inorderTraversal(bst.root);
```
以上代码实现了一个简单的二叉排序树,可以通过 `insert` 方法插入节点,通过 `inorderTraversal` 方法中序遍历二叉排序树。测试代码插入了数据 `[5, 3, 7, 2, 4, 6, 8]`,输出结果为:
```
2
3
4
5
6
7
8
```
阅读全文