没有右子树的二叉树怎么遍历是如何遍历的?


选择擅长的领域继续答题?
{@each tagList as item}
${item.tagName}
{@/each}
手机回答更方便,互动更有趣,下载APP
提交成功是否继续回答问题?
手机回答更方便,互动更有趣,下载APP
在vc6.0环境下实现,代码如下,这些算法方面的建议还是找本书看看好:#include<stdio.h>#include<malloc.h>typedef struct Node{char data;struct Node *lchild;struct Node *rchild;}BiTreeNode;BiTreeNode *CreatBiTree(BiTreeNode *t,char *s)//二叉树的创建{BiTreeNode *p[1024];BiTreeNode *q=NULL;int top=0;int i=0,j,len=0;char ch;ch=s[i];while(ch!='\0'){switch(ch){case '(':top++;p[top]=q;j=1;break;case ')':top--;break;case ',':j=2;break;default:q=(BiTreeNode *)malloc(sizeof(BiTreeNode));q->data=ch;q->lchild=q->rchild=NULL;if(t==NULL)t=q;else{switch(j){case 1:p[top]->lchild=q;break;case 2:p[top]->rchild=q;break;}}}i++;ch=s[i];}return t;}void PreOrder(BiTreeNode *t)//先序遍历{if(t!=NULL){printf("%c ",t->data);PreOrder(t->lchild);PreOrder(t->rchild);}}void InOrder(BiTreeNode *t)//中序遍历{if(t!=NULL){PreOrder(t->lchild);printf("%c ",t->data);PreOrder(t->rchild);}}void PostOrder(BiTreeNode *t)//后序遍历{if(t!=NULL){PreOrder(t->lchild);PreOrder(t->rchild);printf("%c ",t->data);}}int BiTreeDepth(BiTreeNode *t){int dep=0,depl,depr;if(!t)dep=0;else{depl=BiTreeDepth(t->lchild);depr=BiTreeDepth(t->rchild);dep=1+(depl>depr?depl:depr);}return dep;}void main(){BiTreeNode *t=NULL;char *s="a(b(d,e),c)";t=CreatBiTree(t,s);printf("先序遍历:");PreOrder(t);printf("\n");printf("中序遍历:");InOrder(t);printf("\n");printf("后序遍历:");PostOrder(t);printf("\n");printf("二叉树深度为%d\n",BiTreeDepth(t));}
本回答被提问者采纳二叉树的遍历分好几种1:先根遍历2:中根遍历3:后根遍历主要就是用递规的思想.要代码的话追问吧
题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2
2
/ \ / \
3
4 4
3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2
2
\
\
3
3
进阶:
你可以运用递归和迭代两种方法解决这个问题吗?
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/symmetric-tree代码递归求解# Definition for a binary tree node.
# class TreeNode:
#
def __init__(self, x):
#
self.val = x
#
self.left = None
#
self.right = None
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
def check(l,r):
if l is None and r is None:
return True
if l is None or r is None:
return False
return l.val == r.val and check(l.left,r.right) and check(l.right,r.left)
return check(root,root)
1
点赞

0
觉得还不错?
一键收藏
打赏
Leetcode 101. 对称二叉树——遍历左子树和右子树_递归求解题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2
2 / \ / \3
4 4
3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2
2
\
\
3
3 进阶:你可以运用递归和迭代两种方法解决这个问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob复制链接
分类专栏
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐

我要回帖

更多关于 没有右子树的二叉树怎么遍历 的文章