/*
题目:
	给定一棵二叉树和其中一个节点,找出中序遍历的下一个节点。
*/
/*
思路:
	两种情况:
	节点存在右子树:节点右子树的最左节点;
	节点不存在右子树,节点向上一直找父节点或祖父节点,直到其父节点或祖父节点为其双亲节点的左子树,则next节点为父节点或祖父节点,若没有找到,则无next节点。
*/
struct TreeNode{
	int value;
	TreeNode* left;
	TreeNode* right;
	TreeNode* parent;
}

BinaryTreeNode* GetNext(BinaryTreeNode* pNode){
	if(pNode == null) return null;
	
	BinaryTreeNode* targetNode = pNode;
	if(targetNode->right != null){
		targetNode = targetNode->right;
		while(targetNode->left != null){
			targetNode = targetNode->left;
		}	
	}else if(targetNode->parent != null){
		targetNode = targetNode->parent;
		while(targetNode != null && targetNode->parent->right == target){
			targetNode = targetNode->parent;
		}
		if(targetNode != null){
			targetNode = targetNode->parent;
		}
	
	return targetNode;
}
		

   

posted on 2019-11-08 19:09  笨宝宝  阅读(99)  评论(0编辑  收藏  举报