请实现如下函数,在Unity中有一副骨骼树,请使用递归方式与非递归方式实现先序遍历,在Unity的Console输出所有骨骼名。
时间: 2023-11-27 08:53:53 浏览: 24
递归方式实现先序遍历:
```
public void PreorderTraversalRecursive(Transform root)
{
if (root == null) return;
Debug.Log(root.name);
for (int i = 0; i < root.childCount; i++)
{
PreorderTraversalRecursive(root.GetChild(i));
}
}
```
非递归方式实现先序遍历:
```
public void PreorderTraversalIterative(Transform root)
{
if (root == null) return;
Stack<Transform> stack = new Stack<Transform>();
stack.Push(root);
while (stack.Count > 0)
{
Transform node = stack.Pop();
Debug.Log(node.name);
for (int i = node.childCount - 1; i >= 0; i--)
{
stack.Push(node.GetChild(i));
}
}
}
```
使用方法:
```
// 遍历整个骨骼树
Transform root = // 获取骨骼树的根节点
PreorderTraversalRecursive(root);
PreorderTraversalIterative(root);
```