70,037
社区成员
发帖
与我相关
我的任务
分享fun(arr,b,r-1);//这儿改成这样
printf("\b\n");
#include <stdio.h>
#include <stdlib.h>
//二叉树节点
typedef struct tagTreeNode
{
int id;
struct tagTreeNode *left;
struct tagTreeNode *right;
} TreeNode;
void printTree(TreeNode *pNode)
{
if (pNode == NULL) return;
printf("%d ", pNode->id);
printTree(pNode->left);
printTree(pNode->right);
}
int main()
{
TreeNode nodes[21];
int t, n, rootid, i;
for (i = 0; i < 21; ++i)
nodes[i].id = i;
scanf("%d", &t);
while (t--)
{
for (i = 0; i < 21; ++i)
nodes[i].left = nodes[i].right = NULL;
scanf("%d", &n);
scanf("%d", &rootid);
for (int j = 0; j < n - 1; ++j)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
if (c == 0)
nodes[a].left = &nodes[b];
else
nodes[a].right = &nodes[b];
}
printTree(&nodes[rootid]);
printf("\n");
}
return 0;
}

#include <stdio.h>
#include <stdlib.h>
void fun(int a[][3],int b,int n)
{
int i;
printf("%d ",b);
for(i=0;i<n;i++)
{
if(a[i][0]==b && a[i][2]==0)
{//有左子树
fun(a,a[i][1],n);
}
}
for(i=0;i<n;i++)
{
if(a[i][0]==b && a[i][2]==1)
{//有右子树
fun(a,a[i][1],n);
}
}
}
int main()
{
int n,r,b,arr[20][3],i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d",&r,&b);
for(j=0;j<r-1;j++)
{
scanf("%d %d %d",&arr[j][0],&arr[j][1],&arr[j][2]);
}
fun(arr,b,r);
printf("\b\n");
}
system("pause");
return 0;
}
template <class T>
void PreOrder(BinaryTreeNode<T> *t)
{// 对*t进行前序遍历
if(t) {
Visit(t) ; // 访问根节点
PreOrder(t->LeftChild) ; // 前序遍历左子树
PreOrder(t->RightChild) ; // 前序遍历右子树
}
}
template <class T>
void InOrder(BinaryTreeNode<T> *t)
{// 对*t进行中序遍历
if(t) {
InOrder(t->LeftChild) ; // 中序遍历左子树
Visit(t) ; // 访问根节点
InOrder(t->RightChild) ; // 中序遍历右子树
}
}
template <class T>
void PostOrder(BinaryTreeNode<T> *t)
{// 对*t进行后序遍历
if(t) {
PostOrder(t->LeftChild) ; // 后序遍历左子树
PostOrder(t->RightChild) ; // 后序遍历右子树
Visit(t) ; // 访问根节点
}
}