求二叉树的序列化下一个节点

2022/4/15 6:16:27

本文主要是介绍求二叉树的序列化下一个节点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目:

求二叉树的序列化下一个节点(即二叉树中序遍历的下一个节点)

 

* 如果可以快速找出一个节点的父节点,则可以采用比中序遍历法更简便的方法进行求解
* 思路:
* 1.先看这个节点有没有右子树,如果有右子树,则返回右子树的最左节点
* 2.如果没有右子树,就向上找它的父节点,直到找到一个父节点它是作为它父亲的左儿子即可返回该父节点

 

代码及解析:

 1 public static Node getSuccessorNode(Node node) {
 2         if (node == null) {
 3             return null;
 4         }
 5         if (node.right != null) {//如果这个节点有右子树
 6             return getMostLeft(node.right);
 7         }
 8         else {
 9             Node parent = node.parent;
10             while (parent != null && parent.left != null) {//当这个父节点是它父亲的右儿子时,就一直往上找
11                                                            //直到找到父亲的左儿子或者为空时结束
12                 node = parent;
13                 parent = node.parent;
14             }
15             return parent;
16         }
17     }
18     
19     public static Node getMostLeft(Node root) {
20         while (root.left != null) {
21             root = root.left;
22         }
23         return root;
24     }

 



这篇关于求二叉树的序列化下一个节点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程