ZKX's LAB

判断二叉树镜像对称的递归算法 编写一个复制一棵二叉树的递归算法……

2021-04-09知识2

编写复制一棵二叉树的递归算法,我的算法正确吗? #includeusing namespace std;typedef struct TNode/二叉树结构{char nodeValue;结点的值TNode*left;左子树TNode*right;右子树}*BiTree;void CreateBiTree(BiTree&T)/中序遍历方式创建二叉树,输入#代表该结点为空{char nodeValue;cin>;>;nodeValue;if(nodeValue。'#')/结点非空{T=new TNode;T->;nodeValue=nodeValue;CreateBiTree(T->;left);CreateBiTree(T->;right);}else T=NULL;}int CountLeaf(BiTree T){static int LeafNum=0;叶子初始数目为0,使用静态变量if(T)/树非空{if(T->;left=NULL&T->;right=NULL)/为叶子结点LeafNum+;叶子数目加1else/不为叶子结点{CountLeaf(T->;left);递归统计左子树叶子数目CountLeaf(T->;right);递归统计右子树叶子数目}}return LeafNum;}用来测试的main函数,int main(){BiTree T;int leafNum;cout请输入中序遍历的二叉树序列(#号代表该结点为空):如(ABC#DE#G#F##)\";CreateBiTree(T);leafNum=CountLeaf(T);cout该二叉树中叶子结点数为:\";return 0;}

二叉树的对称序列是什么 就是中序,先访问左子树,后访问父节点,最后访问右子树。所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。遍历方案二叉树遍历二叉树遍历从二叉树的 递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:⑴访问结点本身(N),⑵遍历该结点的左子树(L),⑶遍历该结点的右子树(R)。以上三种操作有六种执行次序:NLR、LNR、LRN、NRL、RNL、RLN。注意:前三种次序与后三种次序对称,故只讨论先左后右的前三种次序。遍历命名根据访问结点操作发生位置命名:① NLR:前序遍历(Preorder Traversal 亦称(先序遍历))访问根结点的操作发生在遍历其左右子树之前。② LNR:中序遍历(Inorder Traversal)访问根结点的操作发生在遍历其左右子树之中(间)。③ LRN:后序遍历(Postorder Traversal)访问根结点的操作发生在遍历其左右子树之后。注意:由于被访问的结点必是某子树的根,所以N(Node)、L(Left subtree)和R(Right 。

编写一个复制一棵二叉树的递归算法…… void CopyTree(BiTree S,BiTree&T){if。s)T=NULL;else{CopyTree(S->;lchild,lptr);复制左子树到lptrCopyTree(S->;rchild,rptr);复制右子树到rptrT=(BiTree)malloc(sizeof(BiNode));T->;data=S->;data;T->;lchild=lptr;T->;rchild=rptr;}/else}/CopyTreehiahia,同学,拿分来吧~

#判断二叉树镜像对称的递归算法

随机阅读

qrcode
访问手机版