首页 > 编程知识 正文

先序遍历二叉树算法,二叉树进行前序遍历的结果

时间:2023-05-04 12:18:46 阅读:34410 作者:4341

题目要求:

现在,给定特殊的二叉树数据结构,每个节点不仅有左右孩子的指针,还有指向父节点的指针。

公共类节点{公共int value; 公共节点左; 公共节点权限; 公共节点父项; 公共节点(intvalue ) { this.value=value; }将以下节点编写如下: 中序遍历的下一个节点是下一个节点。

现在给节点,请求他的后继节点。

思路:

中顺扫描按左中右的顺序。 因此,可分为两种情况。

1 .假设该节点中有右部分树,则按中序循环的下一个节点是右部分树的最左下的节点。

2 .如果此节点没有右子树,则在父类中查找中顺序遍历的下一个节点。 中顺遍历按左中右的顺序,他左边子树的所有节点都在他前面,所以下一个节点一定在父节点上。

在这种情况下,可分为以下两种情况。

他在父节点右边的子树上。 那么,根据左中右的关系,其实他的父节点排在他前面。 因此,只能继续从父节点的父节点中查找。

他在父节点左边的子树上。 于是,他的父节点是他的下一个节点。

代码:

publicstaticnodegetsuccessornode (节点节点) if ) node==null { return null; (if ) node.right!=null}{node=node.right; wile(node.left!=null}{node=node.left; }返回节点; }else { Node parent=node.parent; while (父!=nullparent.left!=node}{node=parent; parent=node.parent; }返回父项; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。