二叉树遍历 matlab
时间: 2023-11-03 20:01:38 浏览: 125
二叉树遍历是指按照某种规定的顺序访问二叉树中的所有节点。常见的二叉树遍历方法有前序遍历、中序遍历和后序遍历。
前序遍历:先访问根节点,然后递归地前序遍历左子树,最后递归地前序遍历右子树。
中序遍历:先递归地中序遍历左子树,然后访问根节点,最后递归地中序遍历右子树。
后序遍历:先递归地后序遍历左子树,然后递归地后序遍历右子树,最后访问根节点。
在Matlab中,可以使用递归或栈来实现二叉树的遍历。以下是使用递归和栈的示例代码:
递归实现前序遍历:
```matlab
function preorderTraversal(root)
if isempty(root)
return;
end
disp(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
end
```
使用栈实现前序遍历:
```matlab
function preorderTraversal(root)
if isempty(root)
return;
end
stack = java.util.Stack();
stack.push(root);
while ~stack.empty()
node = stack.pop();
disp(node.val);
if ~isempty(node.right)
stack.push(node.right);
end
if ~isempty(node.left)
stack.push(node.left);
end
end
end
```
递归实现中序遍历:
```matlab
function inorderTraversal(root)
if isempty(root)
return;
end
inorderTraversal(root.left);
disp(root.val);
inorderTraversal(root.right);
end
```
使用栈实现中序遍历:
```matlab
function inorderTraversal(root)
if isempty(root)
return;
end
stack = java.util.Stack();
cur = root;
while ~stack.empty() || ~isempty(cur)
while ~isempty(cur)
stack.push(cur);
cur = cur.left;
end
node = stack.pop();
disp(node.val);
cur = node.right;
end
end
```
递归实现后序遍历:
```matlab
function postorderTraversal(root)
if isempty(root)
return;
end
postorderTraversal(root.left);
postorderTraversal(root.right);
disp(root.val);
end
```
使用栈实现后序遍历:
```matlab
function postorderTraversal(root)
if isempty(root)
return;
end
stack = java.util.Stack();
resStack = java.util.Stack();
stack.push(root);
while ~stack.empty()
node = stack.pop();
resStack.push(node);
if ~isempty(node.left)
stack.push(node.left);
end
if ~isempty(node.right)
stack.push(node.right);
end
end
while ~resStack.empty()
node = resStack.pop();
disp(node.val);
end
end
```
阅读全文