diff --git a/icu4c/source/common/rbbinode.cpp b/icu4c/source/common/rbbinode.cpp
index ff8d9979e16..2f11c57191b 100644
--- a/icu4c/source/common/rbbinode.cpp
+++ b/icu4c/source/common/rbbinode.cpp
@@ -184,31 +184,17 @@ RBBINode *RBBINode::flattenVariables() {
     }
 
     if (fLeftChild != NULL) {
-        if (fLeftChild->fType==varRef) {
-            RBBINode *oldChild   = fLeftChild;
-            fLeftChild           = oldChild->cloneTree();
-            fLeftChild->fParent  = this;
-            delete oldChild;
-        } else {
-            fLeftChild->flattenVariables();
-        }
+        fLeftChild = fLeftChild->flattenVariables();
+        fLeftChild->fParent  = this;
     }
-    
     if (fRightChild != NULL) {
-        if (fRightChild->fType==varRef) {
-            RBBINode *oldChild   = fRightChild;
-            fRightChild          = oldChild->cloneTree();
-            fRightChild->fParent = this;
-            delete oldChild;
-        } else {
-            fRightChild->flattenVariables();
-        }
+        fRightChild = fRightChild->flattenVariables();
+        fRightChild->fParent = this;
     }
     return this;
 }
 
 
-
 //-------------------------------------------------------------------------
 //
 //  flattenSets    Walk the parse tree, replacing any nodes of type setRef